Node highlighting.
[oweals/minetest.git] / src / nodedef.h
index 067861e62314de54db23eeb791e8080db2056926..1f596e46baff75fc977e3bc3e5754b1e87c847da 100644 (file)
@@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "mapnode.h"
 #ifndef SERVER
 #include "tile.h"
+#include "shader.h"
 #endif
 #include "itemgroup.h"
 #include "sound.h" // SimpleSoundSpec
@@ -35,6 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 class IItemDefManager;
 class ITextureSource;
+class IShaderSource;
 class IGameDef;
 
 typedef std::list<std::pair<content_t, int> > GroupItems;
@@ -90,7 +92,7 @@ struct NodeBox
        { reset(); }
 
        void reset();
-       void serialize(std::ostream &os) const;
+       void serialize(std::ostream &os, u16 protocol_version) const;
        void deSerialize(std::istream &is);
 };
 
@@ -149,7 +151,7 @@ enum NodeDrawType
                                                  // uses 2 textures, one for frames, second for faces
 };
 
-#define CF_SPECIAL_COUNT 2
+#define CF_SPECIAL_COUNT 6
 
 struct ContentFeatures
 {
@@ -228,12 +230,14 @@ struct ContentFeatures
        std::string freezemelt;
        // Number of flowing liquids surrounding source
        u8 liquid_range;
-       bool drowning;
+       u8 drowning;
        // Amount of light the node emits
        u8 light_source;
        u32 damage_per_second;
        NodeBox node_box;
        NodeBox selection_box;
+       // Used for waving leaves/plants
+       u8 waving;
        // Compatibility with old maps
        // Set to true if paramtype used to be 'facedir_simple'
        bool legacy_facedir_simple;
@@ -321,7 +325,8 @@ public:
        /*
                Update tile textures to latest return values of TextueSource.
        */
-       virtual void updateTextures(ITextureSource *tsrc)=0;
+       virtual void updateTextures(ITextureSource *tsrc,
+               IShaderSource *shdsrc)=0;
 
        virtual void serialize(std::ostream &os, u16 protocol_version)=0;
        virtual void deSerialize(std::istream &is)=0;