]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/voxel.cpp
Use system sqlite3/jthread libs if available
[dragonfireclient.git] / src / voxel.cpp
index 02635d3af54a6ae4548ad6f2b4ebf45903a2f848..5938f9016d7e202d161cc9c5d722c2870e9cf4ad 100644 (file)
@@ -19,10 +19,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "voxel.h"
 #include "map.h"
-
-// For TimeTaker
-#include "utility.h"
+#include "utility.h" // For TimeTaker
 #include "gettime.h"
+#include "content_mapnode.h"
 
 /*
        Debug stuff
@@ -41,7 +40,6 @@ VoxelManipulator::VoxelManipulator():
        m_data(NULL),
        m_flags(NULL)
 {
-       m_disable_water_climb = false;
 }
 
 VoxelManipulator::~VoxelManipulator()
@@ -221,6 +219,22 @@ void VoxelManipulator::copyFrom(MapNode *src, VoxelArea src_area,
        }
 }
 
+void VoxelManipulator::copyTo(MapNode *dst, VoxelArea dst_area,
+               v3s16 dst_pos, v3s16 from_pos, v3s16 size)
+{
+       for(s16 z=0; z<size.Z; z++)
+       for(s16 y=0; y<size.Y; y++)
+       {
+               s32 i_dst = dst_area.index(dst_pos.X, dst_pos.Y+y, dst_pos.Z+z);
+               s32 i_local = m_area.index(from_pos.X, from_pos.Y+y, from_pos.Z+z);
+               memcpy(&dst[i_dst], &m_data[i_local], size.X*sizeof(MapNode));
+       }
+}
+
+/*
+       Algorithms
+       -----------------------------------------------------
+*/
 
 void VoxelManipulator::clearFlag(u8 flags)
 {
@@ -541,7 +555,7 @@ void VoxelManipulator::spreadLight(enum LightBank bank, v3s16 p)
        Lights neighbors of from_nodes, collects all them and then
        goes on recursively.
 
-       NOTE: This is faster in small areas but will overflow the
+       NOTE: This is faster on small areas but will overflow the
              stack on large areas. Thus it is not used.
 */
 void VoxelManipulator::spreadLight(enum LightBank bank,