Luanti 5.16.0-dev
Loading...
Searching...
No Matches
Schematic Class Reference

#include <mg_schematic.h>

Inheritance diagram for Schematic:
Collaboration diagram for Schematic:

Public Member Functions

 Schematic ()=default
virtual ~Schematic ()
ObjDefclone () const
virtual void resolveNodeNames ()
bool loadSchematicFromFile (const std::string &filename, const NodeDefManager *ndef, StringMap *replace_names=NULL)
bool saveSchematicToFile (const std::string &filename, const NodeDefManager *ndef)
bool getSchematicFromMap (Map *map, v3s16 p1, v3s16 p2)
bool deserializeFromMts (std::istream *is)
bool serializeToMts (std::ostream *os) const
bool serializeToLua (std::ostream *os, bool use_comments, u32 indent_spaces) const
void blitToVManip (MMVManip *vm, v3s16 p, Rotation rot, bool force_place)
bool placeOnVManip (MMVManip *vm, v3s16 p, u32 flags, Rotation rot, bool force_place)
void placeOnMap (ServerMap *map, v3s16 p, u32 flags, Rotation rot, bool force_place)
void applyProbabilities (v3s16 p0, std::vector< std::pair< v3s16, u8 > > *plist, std::vector< std::pair< s16, u8 > > *splist)
Public Member Functions inherited from ObjDef
virtual ~ObjDef ()=default
Public Member Functions inherited from NodeResolver
 NodeResolver ()
virtual ~NodeResolver ()
void cloneTo (NodeResolver *res) const
bool getIdFromNrBacklog (content_t *result_out, const std::string &node_alt, content_t c_fallback, bool error_on_fallback=true)
bool getIdsFromNrBacklog (std::vector< content_t > *result_out, bool all_required=false, content_t c_fallback=CONTENT_IGNORE)
bool isResolveDone () const
void reset (bool resolve_done=false)

Public Attributes

std::vector< content_tc_nodes
u32 flags = 0
v3s16 size
MapNodeschemdata = nullptr
u8 * slice_probs = nullptr
Public Attributes inherited from ObjDef
u32 index
u32 uid
ObjDefHandle handle
std::string name
Public Attributes inherited from NodeResolver
std::vector< std::string > m_nodenames
std::vector< size_t > m_nnlistsizes

Private Member Functions

void condenseContentIds ()

Additional Inherited Members

Protected Member Functions inherited from ObjDef
void cloneTo (ObjDef *def) const
Protected Attributes inherited from NodeResolver
const NodeDefManagerm_ndef = nullptr
u32 m_nodenames_idx = 0

Constructor & Destructor Documentation

◆ Schematic()

Schematic::Schematic ( )
default

References flags, NodeResolver::NodeDefManager, and p().

Referenced by clone(), and saveSchematicToFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~Schematic()

Schematic::~Schematic ( )
virtual

References schemdata, size, slice_probs, and porting::TrackFreedMemory().

Here is the call graph for this function:

Member Function Documentation

◆ applyProbabilities()

void Schematic::applyProbabilities ( v3s16 p0,
std::vector< std::pair< v3s16, u8 > > * plist,
std::vector< std::pair< s16, u8 > > * splist )

References CONTENT_AIR, ObjDef::index, MTSCHEM_PROB_NEVER, p(), schemdata, size, and slice_probs.

Referenced by ModApiMapgen::l_create_schematic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ blitToVManip()

void Schematic::blitToVManip ( MMVManip * vm,
v3s16 p,
Rotation rot,
bool force_place )

References VoxelArea::contains(), CONTENT_AIR, CONTENT_IGNORE, MapNode::getContent(), VoxelArea::index(), VoxelManipulator::m_area, VoxelManipulator::m_data, NodeResolver::m_ndef, MTSCHEM_FORCE_PLACE, MTSCHEM_PROB_ALWAYS, MTSCHEM_PROB_MASK, MTSCHEM_PROB_NEVER, myrand_range(), p(), MapNode::param1, ROTATE_180, ROTATE_270, ROTATE_90, MapNode::rotateAlongYAxis(), sanity_check, schemdata, size, slice_probs, x, y, and z.

Referenced by placeOnMap(), and placeOnVManip().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clone()

ObjDef * Schematic::clone ( ) const
virtual

Implements ObjDef.

References Schematic(), c_nodes, NodeResolver::cloneTo(), ObjDef::cloneTo(), FATAL_ERROR_IF, flags, schemdata, size, and slice_probs.

Referenced by saveSchematicToFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ condenseContentIds()

void Schematic::condenseContentIds ( )
private

References NodeResolver::m_ndef, NodeResolver::m_nodenames, NodeResolver::reset(), schemdata, and size.

Referenced by saveSchematicToFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ deserializeFromMts()

bool Schematic::deserializeFromMts ( std::istream * is)

References CONTENT_IGNORE, decompress(), MapNode::deSerializeBulk(), deSerializeString16(), errorstream, NodeResolver::m_nnlistsizes, NodeResolver::m_nodenames, MTSCHEM_FILE_SIGNATURE, MTSCHEM_FILE_VER_HIGHEST_READ, MTSCHEM_MAPNODE_SER_FMT_VER, MTSCHEM_PROB_ALWAYS_OLD, MTSCHEM_PROB_NEVER, ObjDef::name, readU16(), readU32(), readU8(), readV3S16(), NodeResolver::reset(), schemdata, size, slice_probs, and y.

Referenced by loadSchematicFromFile(), and TestSchematic::testMtsSerializeDeserialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSchematicFromMap()

bool Schematic::getSchematicFromMap ( Map * map,
v3s16 p1,
v3s16 p2 )

References getNodeBlockPos(), VoxelArea::index(), MMVManip::initialEmerge(), VoxelManipulator::m_area, VoxelManipulator::m_data, MTSCHEM_PROB_ALWAYS, NodeResolver::reset(), schemdata, size, slice_probs, x, y, and z.

Referenced by ModApiMapgen::l_create_schematic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadSchematicFromFile()

bool Schematic::loadSchematicFromFile ( const std::string & filename,
const NodeDefManager * ndef,
StringMap * replace_names = NULL )

References deserializeFromMts(), NodeResolver::m_ndef, NodeResolver::m_nodenames, ObjDef::name, NodeResolver::NodeDefManager, and open_ifstream().

Referenced by load_schematic(), and TestSchematic::testFileSerializeDeserialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ placeOnMap()

void Schematic::placeOnMap ( ServerMap * map,
v3s16 p,
u32 flags,
Rotation rot,
bool force_place )

References voxalgo::blit_back_with_light(), blitToVManip(), DECO_PLACE_CENTER_X, DECO_PLACE_CENTER_Y, DECO_PLACE_CENTER_Z, Map::dispatchEvent(), flags, getNodeBlockPos(), MMVManip::initialEmerge(), NodeResolver::m_ndef, MEET_OTHER, myrand_range(), p(), ROTATE_0, ROTATE_270, ROTATE_90, ROTATE_RAND, sanity_check, schemdata, size, and MapEditEvent::type.

Referenced by ModApiMapgen::l_place_schematic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ placeOnVManip()

bool Schematic::placeOnVManip ( MMVManip * vm,
v3s16 p,
u32 flags,
Rotation rot,
bool force_place )

References blitToVManip(), VoxelArea::contains(), DECO_PLACE_CENTER_X, DECO_PLACE_CENTER_Y, DECO_PLACE_CENTER_Z, flags, VoxelManipulator::m_area, NodeResolver::m_ndef, myrand_range(), p(), ROTATE_0, ROTATE_270, ROTATE_90, ROTATE_RAND, sanity_check, schemdata, size, and slice_probs.

Referenced by ModApiMapgen::l_place_schematic_on_vmanip().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolveNodeNames()

void Schematic::resolveNodeNames ( )
virtual

Implements NodeResolver.

References c_nodes, CONTENT_AIR, errorstream, NodeResolver::getIdsFromNrBacklog(), ObjDef::name, schemdata, and size.

Here is the call graph for this function:

◆ saveSchematicToFile()

bool Schematic::saveSchematicToFile ( const std::string & filename,
const NodeDefManager * ndef )

References Schematic(), clone(), condenseContentIds(), NodeResolver::isResolveDone(), NodeResolver::m_ndef, NodeResolver::NodeDefManager, fs::safeWriteToFile(), and serializeToMts().

Referenced by ModApiMapgen::l_create_schematic(), and TestSchematic::testFileSerializeDeserialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ serializeToLua()

bool Schematic::serializeToLua ( std::ostream * os,
bool use_comments,
u32 indent_spaces ) const

References FATAL_ERROR_IF, NodeResolver::isResolveDone(), NodeResolver::m_ndef, NodeResolver::m_nodenames, MTSCHEM_FORCE_PLACE, MTSCHEM_PROB_MASK, schemdata, size, slice_probs, x, y, and z.

Referenced by ModApiMapgen::l_serialize_schematic(), and TestSchematic::testLuaTableSerialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ serializeToMts()

bool Schematic::serializeToMts ( std::ostream * os) const

References compress(), NodeResolver::m_nodenames, MTSCHEM_FILE_SIGNATURE, MTSCHEM_FILE_VER_HIGHEST_WRITE, MTSCHEM_MAPNODE_SER_FMT_VER, schemdata, MapNode::serializeBulk(), serializeString16(), size, slice_probs, writeU16(), writeU32(), writeU8(), writeV3S16(), and y.

Referenced by ModApiMapgen::l_serialize_schematic(), saveSchematicToFile(), and TestSchematic::testMtsSerializeDeserialize().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ c_nodes

std::vector<content_t> Schematic::c_nodes

Referenced by clone(), and resolveNodeNames().

◆ flags

◆ schemdata

◆ size

◆ slice_probs


The documentation for this class was generated from the following files: