#ifndef SERVER
#include "tile.h"
#endif
+#include "materials.h" // MaterialProperties
/*
Content feature list
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;
// 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
liquid_alternative_source = CONTENT_IGNORE;
liquid_viscosity = 0;
light_source = 0;
- digging_properties.clear();
damage_per_second = 0;
+ selection_box = NodeBox();
+ material = MaterialProperties();
}
ContentFeatures()