]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/voxel.h
Fix click areas of singleplayer checkboxes
[dragonfireclient.git] / src / voxel.h
index 2e8015eb19c72dee159458b2902d45fff13889f2..291b51e036fd95c2cbabf67cef30ba0f74c746f3 100644 (file)
@@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "debug.h"
 #include "mapnode.h"
 
+class INodeDefManager;
+
 // For VC++
 #undef min
 #undef max
@@ -362,11 +364,11 @@ class VoxelManipulator /*: public NodeContainer*/
 
                if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
                {
-                       dstream<<"EXCEPT: VoxelManipulator::getNode(): "
+                       /*dstream<<"EXCEPT: VoxelManipulator::getNode(): "
                                        <<"p=("<<p.X<<","<<p.Y<<","<<p.Z<<")"
                                        <<", index="<<m_area.index(p)
                                        <<", flags="<<(int)m_flags[m_area.index(p)]
-                                       <<" is inexistent"<<std::endl;
+                                       <<" is inexistent"<<std::endl;*/
                        throw InvalidPositionException
                        ("VoxelManipulator: getNode: inexistent");
                }
@@ -384,17 +386,25 @@ class VoxelManipulator /*: public NodeContainer*/
 
                return m_data[m_area.index(p)];
        }
+       MapNode getNodeNoExNoEmerge(v3s16 p)
+       {
+               if(m_area.contains(p) == false)
+                       return MapNode(CONTENT_IGNORE);
+               if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
+                       return MapNode(CONTENT_IGNORE);
+               return m_data[m_area.index(p)];
+       }
        MapNode & getNodeRef(v3s16 p)
        {
                emerge(p);
 
                if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
                {
-                       dstream<<"EXCEPT: VoxelManipulator::getNode(): "
+                       /*dstream<<"EXCEPT: VoxelManipulator::getNode(): "
                                        <<"p=("<<p.X<<","<<p.Y<<","<<p.Z<<")"
                                        <<", index="<<m_area.index(p)
                                        <<", flags="<<(int)m_flags[m_area.index(p)]
-                                       <<" is inexistent"<<std::endl;
+                                       <<" is inexistent"<<std::endl;*/
                        throw InvalidPositionException
                        ("VoxelManipulator: getNode: inexistent");
                }
@@ -445,12 +455,14 @@ class VoxelManipulator /*: public NodeContainer*/
                if(m_area.contains(p) == false)
                        return false;
                m_data[m_area.index(p)] = n;
+               return true;
        }
        bool setNodeNoEmerge(s32 i, MapNode n)
        {
                if(m_area.contains(i) == false)
                        return false;
                m_data[i] = n;
+               return true;
        }
        /*bool setContentNoEmerge(v3s16 p, u8 c)
        {
@@ -465,7 +477,8 @@ class VoxelManipulator /*: public NodeContainer*/
 
        virtual void clear();
 
-       void print(std::ostream &o, VoxelPrintMode mode=VOXELPRINT_MATERIAL);
+       void print(std::ostream &o, INodeDefManager *nodemgr,
+                       VoxelPrintMode mode=VOXELPRINT_MATERIAL);
        
        void addArea(VoxelArea area);
 
@@ -487,14 +500,14 @@ class VoxelManipulator /*: public NodeContainer*/
        void clearFlag(u8 flag);
        
        void unspreadLight(enum LightBank bank, v3s16 p, u8 oldlight,
-                       core::map<v3s16, bool> & light_sources);
+                       core::map<v3s16, bool> & light_sources, INodeDefManager *nodemgr);
        void unspreadLight(enum LightBank bank,
                        core::map<v3s16, u8> & from_nodes,
-                       core::map<v3s16, bool> & light_sources);
+                       core::map<v3s16, bool> & light_sources, INodeDefManager *nodemgr);
        
-       void spreadLight(enum LightBank bank, v3s16 p);
+       void spreadLight(enum LightBank bank, v3s16 p, INodeDefManager *nodemgr);
        void spreadLight(enum LightBank bank,
-                       core::map<v3s16, bool> & from_nodes);
+                       core::map<v3s16, bool> & from_nodes, INodeDefManager *nodemgr);
        
        /*
                Virtual functions