summaryrefslogtreecommitdiff
path: root/src/mapblock.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-04-04 02:05:12 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-04-04 02:05:12 +0300
commit2f466726e6e8c318d3277eff6d987197c13e8bd3 (patch)
tree89f611198b6ccf2c0175af9541b3afebb328f48b /src/mapblock.h
parente0f7bd4d57bf0c9b497c4d0bb73f7bd4d5cc0643 (diff)
downloadminetest-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.h39
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;