diff options
Diffstat (limited to 'src/mapblock.h')
-rw-r--r-- | src/mapblock.h | 93 |
1 files changed, 18 insertions, 75 deletions
diff --git a/src/mapblock.h b/src/mapblock.h index 8816dc817..e331c4840 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -42,63 +42,6 @@ class VoxelManipulator; #define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff -/*// Named by looking towards z+ -enum{ - FACE_BACK=0, - FACE_TOP, - FACE_RIGHT, - FACE_FRONT, - FACE_BOTTOM, - FACE_LEFT -};*/ - -// NOTE: If this is enabled, set MapBlock to be initialized with -// CONTENT_IGNORE. -/*enum BlockGenerationStatus -{ - // Completely non-generated (filled with CONTENT_IGNORE). - BLOCKGEN_UNTOUCHED=0, - // Trees or similar might have been blitted from other blocks to here. - // Otherwise, the block contains CONTENT_IGNORE - BLOCKGEN_FROM_NEIGHBORS=2, - // Has been generated, but some neighbors might put some stuff in here - // when they are generated. - // Does not contain any CONTENT_IGNORE - BLOCKGEN_SELF_GENERATED=4, - // The block and all its neighbors have been generated - BLOCKGEN_FULLY_GENERATED=6 -};*/ - -#if 0 -enum -{ - NODECONTAINER_ID_MAPBLOCK, - NODECONTAINER_ID_MAPSECTOR, - NODECONTAINER_ID_MAP, - NODECONTAINER_ID_MAPBLOCKCACHE, - NODECONTAINER_ID_VOXELMANIPULATOR, -}; - -class NodeContainer -{ -public: - virtual bool isValidPosition(v3s16 p) = 0; - virtual MapNode getNode(v3s16 p) = 0; - virtual void setNode(v3s16 p, MapNode & n) = 0; - virtual u16 nodeContainerId() const = 0; - - MapNode getNodeNoEx(v3s16 p) - { - try{ - return getNode(p); - } - catch(InvalidPositionException &e){ - return MapNode(CONTENT_IGNORE); - } - } -}; -#endif - //// //// MapBlock modified reason flags //// @@ -128,7 +71,7 @@ public: //// MapBlock itself //// -class MapBlock /*: public NodeContainer*/ +class MapBlock { public: MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy=false); @@ -198,7 +141,7 @@ public: inline bool isDummy() { - return (data == NULL); + return !data; } inline void unDummify() @@ -298,7 +241,7 @@ public: inline bool isValidPosition(s16 x, s16 y, s16 z) { - return data != NULL + return data && x >= 0 && x < MAP_BLOCKSIZE && y >= 0 && y < MAP_BLOCKSIZE && z >= 0 && z < MAP_BLOCKSIZE; @@ -350,7 +293,7 @@ public: inline MapNode getNodeNoCheck(s16 x, s16 y, s16 z, bool *valid_position) { - *valid_position = data != NULL; + *valid_position = data != nullptr; if (!valid_position) return MapNode(CONTENT_IGNORE); @@ -380,7 +323,7 @@ public: inline void setNodeNoCheck(s16 x, s16 y, s16 z, MapNode & n) { - if (data == NULL) + if (!data) throw InvalidPositionException(); data[z * zstride + y * ystride + x] = n; @@ -579,7 +522,7 @@ public: */ #ifndef SERVER // Only on client - MapBlockMesh *mesh; + MapBlockMesh *mesh = nullptr; #endif NodeMetadataList m_node_metadata; @@ -615,15 +558,15 @@ private: If NULL, block is a dummy block. Dummy blocks are used for caching not-found-on-disk blocks. */ - MapNode *data; + MapNode *data = nullptr; /* - On the server, this is used for telling whether the block has been modified from the one on disk. - On the client, this is used for nothing. */ - u32 m_modified; - u32 m_modified_reason; + u32 m_modified = MOD_STATE_WRITE_NEEDED; + u32 m_modified_reason = MOD_REASON_INITIAL; /* When propagating sunlight and the above block doesn't exist, @@ -633,7 +576,7 @@ private: undeground with nothing visible above the ground except caves. */ - bool is_underground; + bool is_underground = false; /*! * Each bit indicates if light spreading was finished @@ -643,33 +586,33 @@ private: * night X-, night Y-, night Z-, night Z+, night Y+, night X+, * day X-, day Y-, day Z-, day Z+, day Y+, day X+. */ - u16 m_lighting_complete; + u16 m_lighting_complete = 0xFFFF; // Whether day and night lighting differs - bool m_day_night_differs; - bool m_day_night_differs_expired; + bool m_day_night_differs = false; + bool m_day_night_differs_expired = true; - bool m_generated; + bool m_generated = false; /* When block is removed from active blocks, this is set to gametime. Value BLOCK_TIMESTAMP_UNDEFINED=0xffffffff means there is no timestamp. */ - u32 m_timestamp; + u32 m_timestamp = BLOCK_TIMESTAMP_UNDEFINED; // The on-disk (or to-be on-disk) timestamp value - u32 m_disk_timestamp; + u32 m_disk_timestamp = BLOCK_TIMESTAMP_UNDEFINED; /* When the block is accessed, this is set to 0. Map will unload the block when this reaches a timeout. */ - float m_usage_timer; + float m_usage_timer = 0; /* Reference count; currently used for determining if this block is in the list of blocks to be drawn. */ - int m_refcount; + int m_refcount = 0; }; typedef std::vector<MapBlock*> MapBlockVect; |