diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-04-04 02:05:12 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-04-04 02:05:12 +0300 |
commit | 2f466726e6e8c318d3277eff6d987197c13e8bd3 (patch) | |
tree | 89f611198b6ccf2c0175af9541b3afebb328f48b /src/mapblock.h | |
parent | e0f7bd4d57bf0c9b497c4d0bb73f7bd4d5cc0643 (diff) | |
download | minetest-2f466726e6e8c318d3277eff6d987197c13e8bd3.tar.gz minetest-2f466726e6e8c318d3277eff6d987197c13e8bd3.tar.bz2 minetest-2f466726e6e8c318d3277eff6d987197c13e8bd3.zip |
Made a proper queued thread to client for handling some block mesh updates. Also made client mutex-free to allow easier adding of new stuff.
Diffstat (limited to 'src/mapblock.h')
-rw-r--r-- | src/mapblock.h | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/src/mapblock.h b/src/mapblock.h index 1894269bd..87abf6a86 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -156,20 +156,42 @@ public: 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); + } + } }; /* - Plain functions in mapblock.cpp + Mesh making stuff */ +class MapBlock; + +struct MeshMakeData +{ + u32 m_daynight_ratio; + NodeModMap m_temp_mods; + VoxelManipulator m_vmanip; + v3s16 m_blockpos; + + /* + Copy central data directly from block, and other data from + parent of block. + */ + void fill(u32 daynight_ratio, MapBlock *block); +}; + u8 getFaceLight(u32 daynight_ratio, MapNode n, MapNode n2, v3s16 face_dir); -scene::SMesh* makeMapBlockMesh( - u32 daynight_ratio, - NodeModMap &temp_mods, - VoxelManipulator &vmanip, - v3s16 blockpos_nodes); +scene::SMesh* makeMapBlockMesh(MeshMakeData *data); /* MapBlock itself @@ -185,7 +207,7 @@ public: { return NODECONTAINER_ID_MAPBLOCK; } - + NodeContainer * getParent() { return m_parent; @@ -661,8 +683,7 @@ private: Private member variables */ - // Parent container (practically the Map) - // Not a MapSector, it is just a structural element. + // NOTE: Lots of things rely on this being the Map NodeContainer *m_parent; // Position in blocks on parent v3s16 m_pos; |