X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmapnode.h;h=f19885d87614f6e38e04254ce59bf06c2a94b3d2;hb=18bfa1c785a123499ee12d0551a9447a4d32d93b;hp=1c8c5c49c0d55596c8c313cefd84c8e2f3fd211d;hpb=979ca23f1eae1adeb8b0083dffe7203c54d87395;p=oweals%2Fminetest.git diff --git a/src/mapnode.h b/src/mapnode.h index 1c8c5c49c..f19885d87 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v3d.h" #include "irr_aabb3d.h" #include "light.h" +#include #include class INodeDefManager; @@ -35,19 +36,23 @@ class INodeDefManager; - Tile = TileSpec at some side of a node of some content type */ typedef u16 content_t; -#define MAX_CONTENT 0xfff /* - Ignored node. + The maximum node ID that can be registered by mods. This must + be significantly lower than the maximum content_t value, so that + there is enough room for dummy node IDs, which are created when + a MapBlock containing unknown node names is loaded from disk. +*/ +#define MAX_REGISTERED_CONTENT 0x7fffU - Anything that stores MapNodes doesn't have to preserve parameters - associated with this material. - - Doesn't create faces with anything and is considered being - out-of-map in the game map. +/* + A solid walkable node with the texture unknown_node.png. + + For example, used on the client to display unregistered node IDs + (instead of expanding the vector of node definitions each time + such a node is received). */ -#define CONTENT_IGNORE 127 -#define CONTENT_IGNORE_DEFAULT_PARAM 0 +#define CONTENT_UNKNOWN 125 /* The common material through which the player can walk and which @@ -55,12 +60,35 @@ typedef u16 content_t; */ #define CONTENT_AIR 126 +/* + Ignored node. + + Unloaded chunks are considered to consist of this. Several other + methods return this when an error occurs. Also, during + map generation this means the node has not been set yet. + + Doesn't create faces with anything and is considered being + out-of-map in the game map. +*/ +#define CONTENT_IGNORE 127 + enum LightBank { LIGHTBANK_DAY, LIGHTBANK_NIGHT }; +/* + Simple rotation enum. +*/ +enum Rotation { + ROTATE_0, + ROTATE_90, + ROTATE_180, + ROTATE_270, + ROTATE_RAND, +}; + /* Masks for MapNode.param2 of flowing liquids */ @@ -76,6 +104,10 @@ enum LightBank #define LIQUID_INFINITY_MASK 0x80 //0b10000000 +// mask for param2, now as for liquid +#define LEVELED_MASK 0x3F +#define LEVELED_MAX LEVELED_MASK + /* This is the stuff what the whole world consists of. */ @@ -181,6 +213,8 @@ struct MapNode u8 getFaceDir(INodeDefManager *nodemgr) const; u8 getWallMounted(INodeDefManager *nodemgr) const; v3s16 getWallMountedDir(INodeDefManager *nodemgr) const; + + void rotateAlongYAxis(INodeDefManager *nodemgr, Rotation rot); /* Gets list of node boxes (used for rendering (NDT_NODEBOX) @@ -193,6 +227,13 @@ struct MapNode */ std::vector getSelectionBoxes(INodeDefManager *nodemgr) const; + /* Liquid helpers */ + u8 getMaxLevel(INodeDefManager *nodemgr) const; + u8 getLevel(INodeDefManager *nodemgr) const; + u8 setLevel(INodeDefManager *nodemgr, s8 level = 1); + u8 addLevel(INodeDefManager *nodemgr, s8 add = 1); + void freezeMelt(INodeDefManager *nodemgr); + /* Serialization functions */