Update inventory texture too
[oweals/minetest.git] / src / content_cao.h
index 72cb94eb71d35960691268691e95bcf696718cb7..3a3fbbcda071a4c259bf48bcc1149085950ab67e 100644 (file)
@@ -35,10 +35,10 @@ struct SmoothTranslator
        v3f vect_old;
        v3f vect_show;
        v3f vect_aim;
-       bool aim_is_end;
        f32 anim_counter;
        f32 anim_time;
        f32 anim_time_counter;
+       bool aim_is_end;
 
        SmoothTranslator():
                vect_old(0,0,0),
@@ -46,7 +46,8 @@ struct SmoothTranslator
                vect_aim(0,0,0),
                anim_counter(0),
                anim_time(0),
-               anim_time_counter(0)
+               anim_time_counter(0),
+               aim_is_end(true)
        {}
 
        void init(v3f vect)
@@ -54,10 +55,10 @@ struct SmoothTranslator
                vect_old = vect;
                vect_show = vect;
                vect_aim = vect;
-               aim_is_end = true;
                anim_counter = 0;
                anim_time = 0;
                anim_time_counter = 0;
+               aim_is_end = true;
        }
 
        void sharpen()
@@ -65,15 +66,19 @@ struct SmoothTranslator
                init(vect_show);
        }
 
-       void update(v3f vect_new, bool is_end_position=false)
+       void update(v3f vect_new, bool is_end_position=false, float update_interval=-1)
        {
                aim_is_end = is_end_position;
                vect_old = vect_show;
                vect_aim = vect_new;
-               if(anim_time < 0.001 || anim_time > 1.0)
-                       anim_time = anim_time_counter;
-               else
-                       anim_time = anim_time * 0.9 + anim_time_counter * 0.1;
+               if(update_interval > 0){
+                       anim_time = update_interval;
+               } else {
+                       if(anim_time < 0.001 || anim_time > 1.0)
+                               anim_time = anim_time_counter;
+                       else
+                               anim_time = anim_time * 0.9 + anim_time_counter * 0.1;
+               }
                anim_time_counter = 0;
                anim_counter = 0;
        }
@@ -110,7 +115,7 @@ struct SmoothTranslator
 class TestCAO : public ClientActiveObject
 {
 public:
-       TestCAO();
+       TestCAO(IGameDef *gamedef);
        virtual ~TestCAO();
        
        u8 getType() const
@@ -118,9 +123,9 @@ public:
                return ACTIVEOBJECT_TYPE_TEST;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -142,7 +147,7 @@ private:
 class ItemCAO : public ClientActiveObject
 {
 public:
-       ItemCAO();
+       ItemCAO(IGameDef *gamedef);
        virtual ~ItemCAO();
        
        u8 getType() const
@@ -150,9 +155,9 @@ public:
                return ACTIVEOBJECT_TYPE_ITEM;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -183,7 +188,7 @@ private:
 class RatCAO : public ClientActiveObject
 {
 public:
-       RatCAO();
+       RatCAO(IGameDef *gamedef);
        virtual ~RatCAO();
        
        u8 getType() const
@@ -191,9 +196,9 @@ public:
                return ACTIVEOBJECT_TYPE_RAT;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -226,7 +231,7 @@ private:
 class Oerkki1CAO : public ClientActiveObject
 {
 public:
-       Oerkki1CAO();
+       Oerkki1CAO(IGameDef *gamedef);
        virtual ~Oerkki1CAO();
        
        u8 getType() const
@@ -234,9 +239,9 @@ public:
                return ACTIVEOBJECT_TYPE_OERKKI1;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -275,7 +280,7 @@ private:
 class FireflyCAO : public ClientActiveObject
 {
 public:
-       FireflyCAO();
+       FireflyCAO(IGameDef *gamedef);
        virtual ~FireflyCAO();
        
        u8 getType() const
@@ -283,9 +288,9 @@ public:
                return ACTIVEOBJECT_TYPE_FIREFLY;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -317,7 +322,7 @@ private:
 class MobV2CAO : public ClientActiveObject
 {
 public:
-       MobV2CAO();
+       MobV2CAO(IGameDef *gamedef);
        virtual ~MobV2CAO();
        
        u8 getType() const
@@ -325,9 +330,9 @@ public:
                return ACTIVEOBJECT_TYPE_MOBV2;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();
@@ -391,7 +396,7 @@ struct LuaEntityProperties;
 class LuaEntityCAO : public ClientActiveObject
 {
 public:
-       LuaEntityCAO();
+       LuaEntityCAO(IGameDef *gamedef);
        virtual ~LuaEntityCAO();
        
        u8 getType() const
@@ -399,9 +404,9 @@ public:
                return ACTIVEOBJECT_TYPE_LUAENTITY;
        }
        
-       static ClientActiveObject* create();
+       static ClientActiveObject* create(IGameDef *gamedef);
 
-       void addToScene(scene::ISceneManager *smgr);
+       void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
        void removeFromScene();
        void updateLight(u8 light_at_pos);
        v3s16 getLightPosition();