diff options
Diffstat (limited to 'src/client/clientobject.h')
-rw-r--r-- | src/client/clientobject.h | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/client/clientobject.h b/src/client/clientobject.h index 9377d1e67..c673fff9a 100644 --- a/src/client/clientobject.h +++ b/src/client/clientobject.h @@ -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,53 @@ public: ClientActiveObject(u16 id, Client *client, ClientEnvironment *env); virtual ~ClientActiveObject(); - virtual void addToScene(ITextureSource *tsrc) {}; + virtual void addToScene(ITextureSource *tsrc) {} 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(u8 light_at_pos) {} + virtual void updateLightNoCheck(u8 light_at_pos) {} + virtual v3s16 getLightPosition() { return v3s16(0, 0, 0); } 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 const v3f getPosition() const { return v3f(0.0f); } virtual scene::ISceneNode *getSceneNode() { return NULL; } virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode() { return NULL; } - virtual bool isLocalPlayer() const {return false;} + 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 ClientActiveObject* create(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; @@ -90,10 +94,10 @@ private: static std::unordered_map<u16, Factory> m_types; }; -struct DistanceSortedActiveObject +class DistanceSortedActiveObject { +public: ClientActiveObject *obj; - f32 d; DistanceSortedActiveObject(ClientActiveObject *a_obj, f32 a_d) { @@ -105,4 +109,7 @@ struct DistanceSortedActiveObject { return d < other.d; } + +private: + f32 d; }; |