X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fserverobject.h;h=304281093cc20302b4cd414803508fd5f6763746;hb=a1c5a011421840f4b2f9d8b6cc9b9724cf333168;hp=dfe6312f082cde44e8ac6aa336c446d482f76ca1;hpb=72535d33281ed4c863013590e5fd032c39f0b781;p=oweals%2Fminetest.git diff --git a/src/serverobject.h b/src/serverobject.h index dfe6312f0..304281093 100644 --- a/src/serverobject.h +++ b/src/serverobject.h @@ -17,9 +17,9 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef SERVEROBJECT_HEADER -#define SERVEROBJECT_HEADER +#pragma once +#include #include "irrlichttypes_bloated.h" #include "activeobject.h" #include "inventorymanager.h" @@ -55,7 +55,7 @@ public: Prototypes are used that way. */ ServerActiveObject(ServerEnvironment *env, v3f pos); - virtual ~ServerActiveObject(); + virtual ~ServerActiveObject() = default; virtual ActiveObjectType getSendType() const { return getType(); } @@ -77,7 +77,7 @@ public: /* Some simple getters/setters */ - v3f getBasePosition(){ return m_base_position; } + v3f getBasePosition() const { return m_base_position; } void setBasePosition(v3f pos){ m_base_position = pos; } ServerEnvironment* getEnv(){ return m_env; } @@ -154,6 +154,8 @@ public: {} virtual void getAnimation(v2f *frames, float *frame_speed, float *frame_blend, bool *frame_loop) {} + virtual void setAnimationSpeed(float frame_speed) + {} virtual void setBonePosition(const std::string &bone, v3f position, v3f rotation) {} virtual void getBonePosition(const std::string &bone, v3f *position, v3f *lotation) @@ -166,10 +168,8 @@ public: {} virtual void removeAttachmentChild(int child_id) {} - virtual void detachFromParent() - {} - virtual const UNORDERED_SET &getAttachmentChildIds() - { static const UNORDERED_SET rv; return rv; } + virtual const std::unordered_set &getAttachmentChildIds() + { static const std::unordered_set rv; return rv; } virtual ObjectProperties* accessObjectProperties() { return NULL; } virtual void notifyObjectPropertiesModified() @@ -205,39 +205,43 @@ public: deleted until this is 0 to keep the id preserved for the right object. */ - u16 m_known_by_count; + u16 m_known_by_count = 0; /* - Whether this object is to be removed when nobody knows about it anymore. - Removal is delayed to preserve the id for the time during which it could be confused to some other object by some client. - - This is set to true by the step() method when the object wants - to be deleted. - - This can be set to true by anything else too. + - This is usually set to true by the step() method when the object wants + to be deleted but can be set by anything else too. */ - bool m_removed; + bool m_pending_removal = false; /* - This is set to true when an object should be removed from the active - object list but couldn't be removed because the id has to be - reserved for some client. + Same purpose as m_pending_removal but for deactivation. + deactvation = save static data in block, remove active object - The environment checks this periodically. If this is true and also - m_known_by_count is true, object is deleted from the active object - list. + If this is set alongside with m_pending_removal, removal takes + priority. */ - bool m_pending_deactivation; + bool m_pending_deactivation = false; + + /* + A getter that unifies the above to answer the question: + "Can the environment still interact with this object?" + */ + inline bool isGone() const + { return m_pending_removal || m_pending_deactivation; } /* Whether the object's static data has been stored to a block */ - bool m_static_exists; + bool m_static_exists = false; /* The block from which the object was loaded from, and in which a copy of the static data resides. */ - v3s16 m_static_block; + v3s16 m_static_block = v3s16(1337,1337,1337); /* Queue of messages to be sent to the client @@ -253,12 +257,9 @@ protected: ServerEnvironment *m_env; v3f m_base_position; - UNORDERED_SET m_attached_particle_spawners; + std::unordered_set m_attached_particle_spawners; private: // Used for creating objects based on type static std::map m_types; }; - -#endif -