Move tool stuff to tool.{h,cpp}
[oweals/minetest.git] / src / mapnode_contentfeatures.h
index b60fc8d8bac16b73ce3fd07aaea05a7fd88b7375..68342c1f85f41ea33ce337737f4170e6c17236a1 100644 (file)
@@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef SERVER
 #include "tile.h"
 #endif
+#include "materials.h" // MaterialProperties
 
 /*
        Content feature list
@@ -57,6 +58,35 @@ enum LiquidType
        LIQUID_SOURCE
 };
 
+enum NodeBoxType
+{
+       NODEBOX_REGULAR, // Regular block; allows buildable_to
+       NODEBOX_FIXED, // Static separately defined box
+       NODEBOX_WALLMOUNTED, // Box for wall_mounted nodes; (top, bottom, side)
+};
+
+struct NodeBox
+{
+       enum NodeBoxType type;
+       // NODEBOX_REGULAR (no parameters)
+       // NODEBOX_FIXED
+       core::aabbox3d<f32> fixed;
+       // NODEBOX_WALLMOUNTED
+       core::aabbox3d<f32> wall_top;
+       core::aabbox3d<f32> wall_bottom;
+       core::aabbox3d<f32> wall_side; // being at the -X side
+
+       NodeBox():
+               type(NODEBOX_REGULAR),
+               // default is rail-like
+               fixed(-BS/2, -BS/2, -BS/2, BS/2, -BS/2+BS/16., BS/2),
+               // default is sign/ladder-like
+               wall_top(-BS/2, BS/2-BS/16., -BS/2, BS/2, BS/2, BS/2),
+               wall_bottom(-BS/2, -BS/2, -BS/2, BS/2, -BS/2+BS/16., BS/2),
+               wall_side(-BS/2, -BS/2, -BS/2, -BS/2+BS/16., BS/2, BS/2)
+       {}
+};
+
 struct MapNode;
 class NodeMetadata;
 
@@ -145,10 +175,11 @@ struct ContentFeatures
        // Amount of light the node emits
        u8 light_source;
        
-       // Digging properties for different tools
-       DiggingPropertiesList digging_properties;
-
        u32 damage_per_second;
+
+       NodeBox selection_box;
+
+       MaterialProperties material;
        
        // NOTE: Move relevant properties to here from elsewhere
 
@@ -184,8 +215,9 @@ struct ContentFeatures
                liquid_alternative_source = CONTENT_IGNORE;
                liquid_viscosity = 0;
                light_source = 0;
-               digging_properties.clear();
                damage_per_second = 0;
+               selection_box = NodeBox();
+               material = MaterialProperties();
        }
 
        ContentFeatures()