Fix how address is logged when a wrong password is supplied
[oweals/minetest.git] / src / mapnode.h
index f19885d87614f6e38e04254ce59bf06c2a94b3d2..7cc25c60cfabde4b70036e1b80667ad67f69ebad 100644 (file)
@@ -62,11 +62,11 @@ typedef u16 content_t;
 
 /*
        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.
 */
@@ -108,6 +108,9 @@ enum Rotation {
 #define LEVELED_MASK 0x3F
 #define LEVELED_MAX LEVELED_MASK
 
+
+struct ContentFeatures;
+
 /*
        This is the stuff what the whole world consists of.
 */
@@ -129,25 +132,27 @@ struct MapNode
                - Uhh... well, most blocks have light or nothing in here.
        */
        u8 param1;
-       
+
        /*
                The second parameter. Initialized to 0.
                E.g. direction for torches and flowing water.
        */
        u8 param2;
 
+       MapNode()
+       { }
+
        MapNode(const MapNode & n)
        {
                *this = n;
        }
-       
-       MapNode(content_t content=CONTENT_AIR, u8 a_param1=0, u8 a_param2=0)
-       {
-               param0 = content;
-               param1 = a_param1;
-               param2 = a_param2;
-       }
-       
+
+       MapNode(content_t content, u8 a_param1=0, u8 a_param2=0)
+               : param0(content),
+                 param1(a_param1),
+                 param2(a_param2)
+       { }
+
        // Create directly from a nodename
        // If name is unknown, sets CONTENT_IGNORE
        MapNode(INodeDefManager *ndef, const std::string &name,
@@ -159,7 +164,7 @@ struct MapNode
                                && param1 == other.param1
                                && param2 == other.param2);
        }
-       
+
        // To be used everywhere
        content_t getContent() const
        {
@@ -185,11 +190,37 @@ struct MapNode
        {
                param2 = p;
        }
-       
+
        void setLight(enum LightBank bank, u8 a_light, INodeDefManager *nodemgr);
+
+       /**
+        * Check if the light value for night differs from the light value for day.
+        *
+        * @return If the light values are equal, returns true; otherwise false
+        */
+       bool isLightDayNightEq(INodeDefManager *nodemgr) const;
+
        u8 getLight(enum LightBank bank, INodeDefManager *nodemgr) const;
+
+       /**
+        * This function differs from getLight(enum LightBank bank, INodeDefManager *nodemgr)
+        * in that the ContentFeatures of the node in question are not retrieved by
+        * the function itself.  Thus, if you have already called nodemgr->get() to
+        * get the ContentFeatures you pass it to this function instead of the
+        * function getting ContentFeatures itself.  Since INodeDefManager::get()
+        * is relatively expensive this can lead to significant performance
+        * improvements in some situations.  Call this function if (and only if)
+        * you have already retrieved the ContentFeatures by calling
+        * INodeDefManager::get() for the node you're working with and the
+        * pre-conditions listed are true.
+        *
+        * @pre f != NULL
+        * @pre f->param_type == CPT_LIGHT
+        */
+       u8 getLightNoChecks(LightBank bank, const ContentFeatures *f) const;
+
        bool getLightBanks(u8 &lightday, u8 &lightnight, INodeDefManager *nodemgr) const;
-       
+
        // 0 <= daylight_factor <= 1000
        // 0 <= return value <= LIGHT_SUN
        u8 getLightBlend(u32 daylight_factor, INodeDefManager *nodemgr) const
@@ -200,25 +231,14 @@ struct MapNode
                return blend_light(daylight_factor, lightday, lightnight);
        }
 
-       // 0.0 <= daylight_factor <= 1.0
-       // 0 <= return value <= LIGHT_SUN
-       u8 getLightBlendF1(float daylight_factor, INodeDefManager *nodemgr) const
-       {
-               u8 lightday = 0;
-               u8 lightnight = 0;
-               getLightBanks(lightday, lightnight, nodemgr);
-               return blend_light_f1(daylight_factor, lightday, lightnight);
-       }
-
        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)
-               and collision)
+               Gets list of node boxes (used for rendering (NDT_NODEBOX))
        */
        std::vector<aabb3f> getNodeBoxes(INodeDefManager *nodemgr) const;
 
@@ -227,12 +247,18 @@ struct MapNode
        */
        std::vector<aabb3f> getSelectionBoxes(INodeDefManager *nodemgr) const;
 
-       /* Liquid helpers */
+       /*
+               Gets list of collision boxes
+       */
+       std::vector<aabb3f> getCollisionBoxes(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
@@ -241,7 +267,7 @@ struct MapNode
        static u32 serializedLength(u8 version);
        void serialize(u8 *dest, u8 version);
        void deSerialize(u8 *source, u8 version);
-       
+
        // Serializes or deserializes a list of nodes in bulk format (first the
        // content of all nodes, then the param1 of all nodes, then the param2
        // of all nodes).