#include <map.h>
Public Member Functions | |
Map (IGameDef *gamedef) | |
virtual | ~Map () |
DISABLE_CLASS_COPY (Map) | |
virtual s32 | mapType () const |
virtual void | drop () |
void | addEventReceiver (MapEventReceiver *event_receiver) |
void | removeEventReceiver (MapEventReceiver *event_receiver) |
void | dispatchEvent (const MapEditEvent &event) |
MapSector * | getSectorNoGenerateNoLock (v2s16 p2d) |
MapSector * | getSectorNoGenerate (v2s16 p2d) |
virtual MapSector * | emergeSector (v2s16 p) |
MapBlock * | getBlockNoCreate (v3s16 p) |
MapBlock * | getBlockNoCreateNoEx (v3s16 p) |
virtual MapBlock * | emergeBlock (v3s16 p, bool create_blank=true) |
const NodeDefManager * | getNodeDefManager () |
bool | isNodeUnderground (v3s16 p) |
bool | isValidPosition (v3s16 p) |
void | setNode (v3s16 p, MapNode &n) |
MapNode | getNode (v3s16 p, bool *is_valid_position=NULL) |
void | addNodeAndUpdate (v3s16 p, MapNode n, std::map< v3s16, MapBlock * > &modified_blocks, bool remove_metadata=true) |
void | removeNodeAndUpdate (v3s16 p, std::map< v3s16, MapBlock * > &modified_blocks) |
bool | addNodeWithEvent (v3s16 p, MapNode n, bool remove_metadata=true) |
bool | removeNodeWithEvent (v3s16 p) |
virtual void | beginSave () |
virtual void | endSave () |
virtual void | save (ModifiedState save_level) |
virtual bool | saveBlock (MapBlock *block) |
virtual bool | deleteBlock (v3s16 blockpos) |
void | timerUpdate (float dtime, float unload_timeout, u32 max_loaded_blocks, std::vector< v3s16 > *unloaded_blocks=NULL) |
void | unloadUnreferencedBlocks (std::vector< v3s16 > *unloaded_blocks=NULL) |
void | deleteSectors (std::vector< v2s16 > &list) |
virtual void | PrintInfo (std::ostream &out) |
void | transformLiquids (std::map< v3s16, MapBlock * > &modified_blocks, ServerEnvironment *env) |
std::vector< v3s16 > | findNodesWithMetadata (v3s16 p1, v3s16 p2) |
NodeMetadata * | getNodeMetadata (v3s16 p) |
bool | setNodeMetadata (v3s16 p, NodeMetadata *meta) |
Sets metadata for a node. More... | |
void | removeNodeMetadata (v3s16 p) |
NodeTimer | getNodeTimer (v3s16 p) |
void | setNodeTimer (const NodeTimer &t) |
void | removeNodeTimer (v3s16 p) |
void | transforming_liquid_add (v3s16 p) |
bool | isBlockOccluded (MapBlock *block, v3s16 cam_pos_nodes) |
Protected Member Functions | |
bool | determineAdditionalOcclusionCheck (const v3s16 &pos_camera, const core::aabbox3d< s16 > &block_bounds, v3s16 &check) |
bool | isOccluded (const v3s16 &pos_camera, const v3s16 &pos_target, float step, float stepfac, float start_offset, float end_offset, u32 needed_count) |
Protected Attributes | |
IGameDef * | m_gamedef |
std::set< MapEventReceiver * > | m_event_receivers |
std::map< v2s16, MapSector * > | m_sectors |
MapSector * | m_sector_cache = nullptr |
v2s16 | m_sector_cache_p |
UniqueQueue< v3s16 > | m_transforming_liquid |
const NodeDefManager * | m_nodedef |
Private Attributes | |
f32 | m_transforming_liquid_loop_count_multiplier = 1.0f |
u32 | m_unprocessed_count = 0 |
u64 | m_inc_trending_up_start_time = 0 |
bool | m_queue_size_timer_started = false |
Friends | |
class | LuaVoxelManip |
Map::Map | ( | IGameDef * | gamedef | ) |
|
virtual |
References m_sectors.
void Map::addEventReceiver | ( | MapEventReceiver * | event_receiver | ) |
References m_event_receivers.
Referenced by Server::init().
void Map::addNodeAndUpdate | ( | v3s16 | p, |
MapNode | n, | ||
std::map< v3s16, MapBlock * > & | modified_blocks, | ||
bool | remove_metadata = true |
||
) |
References CONTENT_AIR, dir(), g_7dirs, NodeDefManager::get(), MapNode::getContent(), getNode(), ContentFeatures::isLiquid(), LIGHTBANK_DAY, LIGHTBANK_NIGHT, m_gamedef, m_nodedef, m_transforming_liquid, p(), UniqueQueue< Value >::push_back(), removeNodeMetadata(), IRollbackManager::reportAction(), IGameDef::rollback(), MapNode::setLight(), setNode(), RollbackAction::setSetNode(), and voxalgo::update_lighting_nodes().
Referenced by Client::addNode(), addNodeWithEvent(), and removeNodeAndUpdate().
References addNodeAndUpdate(), dispatchEvent(), MEET_ADDNODE, MEET_SWAPNODE, p(), and MapEditEvent::type.
Referenced by RollbackAction::applyRevert(), ServerEnvironment::setNode(), and ServerEnvironment::swapNode().
|
inlinevirtual |
Reimplemented in ServerMap.
Referenced by timerUpdate().
void Map::deleteSectors | ( | std::vector< v2s16 > & | list | ) |
References m_sector_cache, and m_sectors.
Referenced by timerUpdate().
|
protected |
References CLOSEST_EDGE.
Referenced by isBlockOccluded().
Map::DISABLE_CLASS_COPY | ( | Map | ) |
void Map::dispatchEvent | ( | const MapEditEvent & | event | ) |
References m_event_receivers.
Referenced by addNodeWithEvent(), RollbackAction::applyRevert(), ModApiEnvMod::l_delete_area(), ModApiEnvMod::l_fix_light(), LuaVoxelManip::l_write_to_map(), ServerMap::loadBlock(), Schematic::placeOnMap(), removeNodeWithEvent(), NodeMetaRef::reportMetadataChange(), ServerInventoryManager::setInventoryModified(), and treegen::spawn_ltree().
|
inlinevirtual |
Reimplemented in ClientMap.
Referenced by ServerEnvironment::~ServerEnvironment().
Reimplemented in ServerMap.
References getBlockNoCreateNoEx(), and p().
Referenced by RollbackAction::applyRevert(), findNodesWithMetadata(), getNodeMetadata(), getNodeTimer(), ModApiEnvMod::l_load_area(), setNodeMetadata(), and setNodeTimer().
Reimplemented in ClientMap.
Referenced by Client::handleCommand_BlockData().
|
inlinevirtual |
Reimplemented in ServerMap.
Referenced by timerUpdate().
References VoxelArea::contains(), emergeBlock(), NodeMetadataList::getAllKeys(), getBlockNoCreateNoEx(), getNodeBlockPos(), infostream, MapBlock::m_node_metadata, MAP_BLOCKSIZE, p(), PP, sortBoxVerticies(), and verbosestream.
References getBlockNoCreateNoEx().
Referenced by setNode().
References MapSector::getBlockNoCreateNoEx(), and getSectorNoGenerate().
Referenced by Client::addUpdateMeshTask(), Server::AsyncRunStep(), voxalgo::blit_back_with_light(), MMVManip::blitBackAll(), MeshUpdateQueue::cacheBlock(), ServerEnvironment::clearObjects(), ABMHandler::countObjects(), ServerEnvironment::deactivateFarObjects(), ServerMap::deleteBlock(), ServerEnvironment::deleteStaticFromBlock(), emergeBlock(), ServerMap::emergeBlock(), MeshMakeData::fill(), findNodesWithMetadata(), voxalgo::finish_bulk_light_update(), ServerMap::finishBlockMake(), EmergeThread::finishGen(), getBlockNoCreate(), ServerMap::getBlockOrEmerge(), EmergeThread::getBlockOrStartGen(), RemoteClient::GetNextBlocks(), getNode(), getNodeMetadata(), getNodeTimer(), MMVManip::initialEmerge(), voxalgo::is_sunlight_above(), voxalgo::is_sunlight_above_block(), isNodeUnderground(), isValidPosition(), ServerMap::loadBlock(), ReflowScan::lookupBlock(), voxalgo::propagate_block_sunlight(), removeNodeMetadata(), removeNodeTimer(), voxalgo::repair_block_light(), Server::SendBlock(), Server::SendBlocks(), setNodeMetadata(), setNodeTimer(), ServerEnvironment::setStaticForActiveObjectsInBlock(), voxalgo::spread_light(), ServerEnvironment::step(), Client::step(), transformLiquids(), voxalgo::unspread_light(), voxalgo::update_block_border_lighting(), and voxalgo::update_lighting_nodes().
References CONTENT_IGNORE, getBlockNoCreateNoEx(), getNodeBlockPos(), MapBlock::getNodeNoCheck(), MAP_BLOCKSIZE, and p().
Referenced by RollbackNode::RollbackNode(), SmokePuffCSO::SmokePuffCSO(), addNodeAndUpdate(), ABMHandler::apply(), RollbackAction::applyRevert(), Pathfinder::calcCost(), collisionMoveSimple(), Environment::continueRaycast(), Client::CSMGetNode(), Server::findSpawnPos(), ServerEnvironment::findSunlight(), ClientMap::getBackgroundBrightness(), getNeighborConnectingFace(), MapBlock::getNodeParent(), Pathfinder::getPath(), LocalPlayer::getSlipFactor(), getVisibleBrightness(), LocalPlayer::handleAutojump(), Server::handleCommand_Interact(), Game::handleDigging(), Game::handlePointingAtNode(), GridNodeContainer::initNode(), voxalgo::is_light_locally_correct(), isOccluded(), ModApiEnvMod::l_find_node_near(), ModApiEnvMod::l_find_nodes_in_area(), ModApiEnvMod::l_find_nodes_in_area_under_air(), Environment::line_of_sight(), LocalPlayer::move(), ScriptApiNode::node_on_receive_fields(), ScriptApiNodemeta::nodemeta_inventory_AllowMove(), ScriptApiNodemeta::nodemeta_inventory_AllowPut(), ScriptApiNodemeta::nodemeta_inventory_AllowTake(), ScriptApiNodemeta::nodemeta_inventory_OnMove(), ScriptApiNodemeta::nodemeta_inventory_OnPut(), ScriptApiNodemeta::nodemeta_inventory_OnTake(), Game::nodePlacement(), LocalPlayer::old_move(), ServerEnvironment::removeNode(), ClientMap::renderPostFx(), ServerEnvironment::setNode(), ClientEnvironment::step(), PlayerSAO::step(), GenericCAO::step(), transformLiquids(), GameUI::update(), Camera::update(), voxalgo::update_lighting_nodes(), ClientMap::updateDrawList(), Particle::updateLight(), GenericCAO::updateLight(), Game::updatePointedThing(), LocalPlayer::updateSneakNode(), Game::updateSound(), ServerMap::updateVManip(), and Pathfinder::walkDownwards().
|
inline |
References m_nodedef.
Referenced by voxalgo::blit_back_with_light(), Environment::continueRaycast(), voxalgo::finish_bulk_light_update(), MapNode::getNeighbors(), voxalgo::repair_block_light(), voxalgo::update_block_border_lighting(), voxalgo::update_lighting_nodes(), and Game::updatePointedThing().
NodeMetadata * Map::getNodeMetadata | ( | v3s16 | p | ) |
References emergeBlock(), NodeMetadataList::get(), getBlockNoCreateNoEx(), getNodeBlockPos(), infostream, MapBlock::m_node_metadata, MAP_BLOCKSIZE, p(), PP, and warningstream.
Referenced by RollbackNode::RollbackNode(), RollbackAction::applyRevert(), NodeMetadataFormSource::getForm(), ServerInventoryManager::getInventory(), Client::getInventory(), NodeMetaRef::getmeta(), Game::handlePointingAtNode(), ModApiClient::l_get_meta(), NodeMetadataFormSource::resolveText(), and Server::sendMetadataChanged().
References NodeTimer::elapsed, emergeBlock(), NodeTimerList::get(), getBlockNoCreateNoEx(), getNodeBlockPos(), infostream, MapBlock::m_node_timers, MAP_BLOCKSIZE, p(), PP, NodeTimer::timeout, and warningstream.
Referenced by NodeTimerRef::l_get_elapsed(), NodeTimerRef::l_get_timeout(), and NodeTimerRef::l_is_started().
References getSectorNoGenerateNoLock(), and p().
Referenced by ServerMap::createSector(), ServerMap::deleteBlock(), ClientMap::emergeSector(), and getBlockNoCreateNoEx().
References m_sector_cache, m_sector_cache_p, m_sectors, and p().
Referenced by getSectorNoGenerate().
References BS, determineAdditionalOcclusionCheck(), dir(), MapBlock::getBox(), MapBlock::getPosRelative(), isOccluded(), and MAP_BLOCKSIZE.
Referenced by RemoteClient::GetNextBlocks(), and ClientMap::updateDrawList().
bool Map::isNodeUnderground | ( | v3s16 | p | ) |
References getBlockNoCreateNoEx(), MapBlock::getIsUnderground(), getNodeBlockPos(), and p().
|
protected |
References BS, floatToInt(), NodeDefManager::get(), getNode(), intToFloat(), ContentFeatures::light_propagates, and m_nodedef.
Referenced by isBlockOccluded().
bool Map::isValidPosition | ( | v3s16 | p | ) |
References getBlockNoCreateNoEx(), getNodeBlockPos(), and p().
Referenced by Client::handleCommand_NodemetaChanged(), and MapBlock::isValidPositionParent().
|
inlinevirtual |
Reimplemented in ServerMap, and ClientMap.
References MAPTYPE_BASE.
Referenced by timerUpdate().
|
virtual |
Reimplemented in ServerMap, and ClientMap.
Referenced by timerUpdate().
void Map::removeEventReceiver | ( | MapEventReceiver * | event_receiver | ) |
References m_event_receivers.
References addNodeAndUpdate(), CONTENT_AIR, and p().
Referenced by Client::removeNode(), and removeNodeWithEvent().
void Map::removeNodeMetadata | ( | v3s16 | p | ) |
References getBlockNoCreateNoEx(), getNodeBlockPos(), MapBlock::m_node_metadata, MAP_BLOCKSIZE, p(), NodeMetadataList::remove(), and warningstream.
Referenced by addNodeAndUpdate(), RollbackAction::applyRevert(), and NodeMetaRef::clearMeta().
void Map::removeNodeTimer | ( | v3s16 | p | ) |
References getBlockNoCreateNoEx(), getNodeBlockPos(), MapBlock::m_node_timers, MAP_BLOCKSIZE, p(), NodeTimerList::remove(), and warningstream.
Referenced by NodeTimerRef::l_stop().
bool Map::removeNodeWithEvent | ( | v3s16 | p | ) |
References dispatchEvent(), MEET_REMOVENODE, p(), removeNodeAndUpdate(), and MapEditEvent::type.
Referenced by ServerEnvironment::removeNode().
|
inlinevirtual |
Reimplemented in ServerMap.
References FATAL_ERROR.
Referenced by Server::AsyncRunStep().
|
inlinevirtual |
Reimplemented in ServerMap.
Referenced by timerUpdate().
References CONTENT_IGNORE, errorstream, NodeDefManager::get(), getBlockNoCreate(), MapNode::getContent(), getNodeBlockPos(), MapBlock::getNodeNoCheck(), m_nodedef, MAP_BLOCKSIZE, ContentFeatures::name, p(), PP, and MapBlock::setNodeNoCheck().
Referenced by addNodeAndUpdate(), transformLiquids(), and voxalgo::update_lighting_nodes().
bool Map::setNodeMetadata | ( | v3s16 | p, |
NodeMetadata * | meta | ||
) |
Sets metadata for a node.
This method sets the metadata for a given node. On success, it returns true
and the object pointed to by meta
is then managed by the system and should not be deleted by the caller.
In case of failure, the method returns false
and the caller is still responsible for deleting the object!
p | node coordinates |
meta | pointer to NodeMetadata object |
true
on success, false on failure References emergeBlock(), getBlockNoCreateNoEx(), getNodeBlockPos(), infostream, MapBlock::m_node_metadata, MAP_BLOCKSIZE, p(), PP, NodeMetadataList::set(), and warningstream.
Referenced by RollbackAction::applyRevert(), NodeMetaRef::getmeta(), and Client::handleCommand_NodemetaChanged().
void Map::setNodeTimer | ( | const NodeTimer & | t | ) |
References NodeTimer::elapsed, emergeBlock(), getBlockNoCreateNoEx(), getNodeBlockPos(), infostream, MapBlock::m_node_timers, MAP_BLOCKSIZE, p(), NodeTimer::position, PP, NodeTimerList::set(), NodeTimer::timeout, and warningstream.
Referenced by NodeTimerRef::l_set(), and NodeTimerRef::l_start().
void Map::timerUpdate | ( | float | dtime, |
float | unload_timeout, | ||
u32 | max_loaded_blocks, | ||
std::vector< v3s16 > * | unloaded_blocks = NULL |
||
) |
References Profiler::add(), beginSave(), TimeOrderedMapBlock::block, MapSector::deleteBlock(), deleteSectors(), endSave(), MapSector::getBlocks(), MapBlock::getModified(), MapBlock::getModifiedReasonString(), MapBlock::getPos(), infostream, m_sectors, mapType(), MAPTYPE_SERVER, MOD_STATE_CLEAN, p(), Profiler::print(), PrintInfo(), MapBlock::refGet(), saveBlock(), TimeOrderedMapBlock::sect, and U32_MAX.
Referenced by Server::AsyncRunStep(), Client::step(), and unloadUnreferencedBlocks().
void Map::transforming_liquid_add | ( | v3s16 | p | ) |
References m_transforming_liquid, p(), and UniqueQueue< Value >::push_back().
void Map::transformLiquids | ( | std::map< v3s16, MapBlock * > & | modified_blocks, |
ServerEnvironment * | env | ||
) |
References CONTENT_AIR, CONTENT_IGNORE, ContentFeatures::floodable, UniqueQueue< Value >::front(), g_settings, NodeDefManager::get(), getBlockNoCreateNoEx(), MapNode::getContent(), getNode(), getNodeBlockPos(), Settings::getS32(), ServerEnvironment::getScriptIface(), IRollbackManager::getSuspect(), porting::getTimeMs(), Settings::getU16(), infostream, LIGHTBANK_DAY, LIGHTBANK_NIGHT, liquid_6dirs, ContentFeatures::liquid_alternative_flowing_id, ContentFeatures::liquid_alternative_source_id, LIQUID_FLOW_DOWN_MASK, LIQUID_FLOWING, LIQUID_LEVEL_MASK, LIQUID_LEVEL_MAX, LIQUID_LEVEL_SOURCE, LIQUID_NONE, ContentFeatures::liquid_range, ContentFeatures::liquid_renewable, LIQUID_SOURCE, ContentFeatures::liquid_type, ContentFeatures::liquid_viscosity, m_gamedef, m_inc_trending_up_start_time, m_nodedef, m_queue_size_timer_started, m_transforming_liquid, m_unprocessed_count, NodeNeighbor::n, NEIGHBOR_LOWER, NEIGHBOR_SAME_LEVEL, NEIGHBOR_UPPER, ScriptApiNode::node_on_flood(), NodeNeighbor::p, p(), MapNode::param2, UniqueQueue< Value >::pop_front(), UniqueQueue< Value >::push_back(), IRollbackManager::reportAction(), IGameDef::rollback(), MapNode::setContent(), MapNode::setLight(), setNode(), RollbackAction::setSetNode(), UniqueQueue< Value >::size(), NodeNeighbor::t, voxalgo::update_lighting_nodes(), and WATER_DROP_BOOST.
Referenced by Server::AsyncRunStep().
void Map::unloadUnreferencedBlocks | ( | std::vector< v3s16 > * | unloaded_blocks = NULL | ) |
References timerUpdate().
Referenced by ServerEnvironment::clearObjects().
|
friend |
|
protected |
Referenced by addEventReceiver(), dispatchEvent(), and removeEventReceiver().
|
protected |
Referenced by addNodeAndUpdate(), ServerMap::createSector(), ClientMap::emergeSector(), and transformLiquids().
|
private |
Referenced by transformLiquids().
|
protected |
|
private |
Referenced by transformLiquids().
|
protected |
Referenced by deleteSectors(), and getSectorNoGenerateNoLock().
|
protected |
Referenced by getSectorNoGenerateNoLock().
|
protected |
|
private |
|
private |
Referenced by transformLiquids().