LocalPlayer::accelerateHorizontal: cleanups
[oweals/minetest.git] / src / nodedef.h
index 4d3bacc6c55cdd8ae92e744af7d0f34bc0cbba44..66296016af4a0b21d374112d8d3325f4821b5705 100644 (file)
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef SERVER
 #include "client/tile.h"
 #include "shader.h"
+#include <IMeshManipulator.h>
 class Client;
 #endif
 #include "itemgroup.h"
@@ -186,6 +187,8 @@ enum NodeDrawType
        NDT_GLASSLIKE_FRAMED_OPTIONAL,
        // Uses static meshes
        NDT_MESH,
+       // Combined plantlike-on-solid
+       NDT_PLANTLIKE_ROOTED,
 };
 
 // Mesh options for NDT_PLANTLIKE with CPT2_MESHOPTIONS
@@ -207,24 +210,18 @@ enum PlantlikeStyle {
 
 struct TileDef
 {
-       std::string name;
-       bool backface_culling; // Takes effect only in special cases
-       bool tileable_horizontal;
-       bool tileable_vertical;
+       std::string name = "";
+       bool backface_culling = true; // Takes effect only in special cases
+       bool tileable_horizontal = true;
+       bool tileable_vertical = true;
        //! If true, the tile has its own color.
-       bool has_color;
+       bool has_color = false;
        //! The color of the tile.
-       video::SColor color;
+       video::SColor color = video::SColor(0xFFFFFFFF);
 
        struct TileAnimationParams animation;
 
-       TileDef() :
-               name(""),
-               backface_culling(true),
-               tileable_horizontal(true),
-               tileable_vertical(true),
-               has_color(false),
-               color(video::SColor(0xFFFFFFFF))
+       TileDef()
        {
                animation.type = TAT_NONE;
        }
@@ -382,13 +379,13 @@ struct ContentFeatures
        void serializeOld(std::ostream &os, u16 protocol_version) const;
        void deSerializeOld(std::istream &is, int version);
        /*!
-        * Since vertex alpha is no lnger supported, this method
-        * adds instructions to the texture names to blend alpha there.
+        * Since vertex alpha is no longer supported, this method
+        * adds opacity directly to the texture pixels.
         *
-        * tiledef, tiledef_special and alpha must be initialized
-        * before calling this.
+        * \param tiles array of the tile definitions.
+        * \param length length of tiles
         */
-       void correctAlpha();
+       void correctAlpha(TileDef *tiles, int length);
 
        /*
                Some handy methods
@@ -432,8 +429,6 @@ public:
 
        virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
 
-       virtual bool getNodeRegistrationStatus() const=0;
-
        virtual void pendNodeResolve(NodeResolver *nr)=0;
        virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0;
        virtual bool nodeboxConnects(const MapNode from, const MapNode to, u8 connect_face)=0;
@@ -491,7 +486,6 @@ public:
        virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
        virtual void deSerialize(std::istream &is)=0;
 
-       virtual bool getNodeRegistrationStatus() const=0;
        virtual void setNodeRegistrationStatus(bool completed)=0;
 
        virtual void pendNodeResolve(NodeResolver *nr)=0;
@@ -517,12 +511,12 @@ public:
 
        void nodeResolveInternal();
 
-       u32 m_nodenames_idx;
-       u32 m_nnlistsizes_idx;
+       u32 m_nodenames_idx = 0;
+       u32 m_nnlistsizes_idx = 0;
        std::vector<std::string> m_nodenames;
        std::vector<size_t> m_nnlistsizes;
-       INodeDefManager *m_ndef;
-       bool m_resolve_done;
+       INodeDefManager *m_ndef = nullptr;
+       bool m_resolve_done = false;
 };
 
 #endif