]> git.lizzy.rs Git - minetest.git/blobdiff - src/client/clientobject.h
Fix '[combine' when EVDF_TEXTURE_NPOT is disabled. (#12187)
[minetest.git] / src / client / clientobject.h
index 5e34177e4ba68c20ddddb626a564b617d3d95c9b..b192f0dcd7f6673b117ec5af7c8e82d6749d2b5f 100644 (file)
@@ -22,6 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "irrlichttypes_extrabloated.h"
 #include "activeobject.h"
 #include <unordered_map>
+#include <unordered_set>
+
 
 class ClientEnvironment;
 class ITextureSource;
@@ -37,51 +39,54 @@ class ClientActiveObject : public ActiveObject
        ClientActiveObject(u16 id, Client *client, ClientEnvironment *env);
        virtual ~ClientActiveObject();
 
-       virtual void addToScene(ITextureSource *tsrc) {};
+       virtual void addToScene(ITextureSource *tsrc, scene::ISceneManager *smgr) = 0;
        virtual void removeFromScene(bool permanent) {}
-       // 0 <= light_at_pos <= LIGHT_SUN
-       virtual void updateLight(u8 light_at_pos){}
-       virtual void updateLightNoCheck(u8 light_at_pos){}
-       virtual v3s16 getLightPosition(){return v3s16(0,0,0);}
+
+       virtual void updateLight(u32 day_night_ratio) {}
+
        virtual bool getCollisionBox(aabb3f *toset) const { return false; }
        virtual bool getSelectionBox(aabb3f *toset) const { return false; }
        virtual bool collideWithObjects() const { return false; }
-       virtual v3f getPosition(){ return v3f(0,0,0); }
-       virtual float getYaw() const { return 0; }
-       virtual scene::ISceneNode *getSceneNode() { return NULL; }
-       virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode() { return NULL; }
-       virtual bool isLocalPlayer() const {return false;}
+       virtual const v3f getPosition() const { return v3f(0.0f); }
+       virtual scene::ISceneNode *getSceneNode() const
+       { return NULL; }
+       virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode() const
+       { return NULL; }
+       virtual bool isLocalPlayer() const { return false; }
+
        virtual ClientActiveObject *getParent() const { return nullptr; };
-       virtual void setAttachments() {}
-       virtual bool doShowSelectionBox(){return true;}
+       virtual const std::unordered_set<int> &getAttachmentChildIds() const
+       { static std::unordered_set<int> rv; return rv; }
+       virtual void updateAttachments() {};
+
+       virtual bool doShowSelectionBox() { return true; }
 
        // Step object in time
-       virtual void step(float dtime, ClientEnvironment *env){}
+       virtual void step(float dtime, ClientEnvironment *env) {}
 
        // Process a message sent by the server side object
-       virtual void processMessage(const std::string &data){}
+       virtual void processMessage(const std::string &data) {}
 
-       virtual std::string infoText() {return "";}
-       virtual std::string debugInfoText() {return "";}
+       virtual std::string infoText() { return ""; }
+       virtual std::string debugInfoText() { return ""; }
 
        /*
                This takes the return value of
                ServerActiveObject::getClientInitializationData
        */
-       virtual void initialize(const std::string &data){}
+       virtual void initialize(const std::string &data) {}
 
        // Create a certain type of ClientActiveObject
-       static ClientActiveObjectcreate(ActiveObjectType type, Client *client,
-                       ClientEnvironment *env);
+       static ClientActiveObject *create(ActiveObjectType type, Client *client,
+               ClientEnvironment *env);
 
        // If returns true, punch will not be sent to the server
-       virtual bool directReportPunch(v3f dir, const ItemStack *punchitem=NULL,
-                       float time_from_last_punch=1000000)
-       { return false; }
+       virtual bool directReportPunch(v3f dir, const ItemStack *punchitem = nullptr,
+               float time_from_last_punch = 1000000) { return false; }
 
 protected:
        // Used for creating objects based on type
-       typedef ClientActiveObject(*Factory)(Client *client, ClientEnvironment *env);
+       typedef ClientActiveObject *(*Factory)(Client *client, ClientEnvironment *env);
        static void registerType(u16 type, Factory f);
        Client *m_client;
        ClientEnvironment *m_env;