#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;
#endif
// List of all block textures that have been used (value is dummy)
- // Exists on server too for cleaner code in content_mapnode.cpp
+ // Used for texture atlas making.
+ // Exists on server too for cleaner code in content_mapnode.cpp.
core::map<std::string, bool> used_texturenames;
// Type of MapNode::param1
bool climbable;
// Player can build on these
bool buildable_to;
- // Whether the node has no liquid, source liquid or flowing liquid
- enum LiquidType liquid_type;
// If true, param2 is set to direction when placed. Used for torches.
// NOTE: the direction format is quite inefficient and should be changed
bool wall_mounted;
// Initial metadata is cloned from this
NodeMetadata *initial_metadata;
+ // Whether the node is non-liquid, source liquid or flowing liquid
+ enum LiquidType liquid_type;
// If the content is liquid, this is the flowing version of the liquid.
- // If content is liquid, this is the same content.
content_t liquid_alternative_flowing;
// If the content is liquid, this is the source version of the liquid.
content_t liquid_alternative_source;
// 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
diggable = true;
climbable = false;
buildable_to = false;
- liquid_type = LIQUID_NONE;
wall_mounted = false;
air_equivalent = false;
often_contains_mineral = false;
dug_item = "";
initial_metadata = NULL;
+ liquid_type = LIQUID_NONE;
liquid_alternative_flowing = CONTENT_IGNORE;
liquid_alternative_source = CONTENT_IGNORE;
liquid_viscosity = 0;
light_source = 0;
- digging_properties.clear();
damage_per_second = 0;
+ selection_box = NodeBox();
+ material = MaterialProperties();
}
ContentFeatures()