summaryrefslogtreecommitdiff
path: root/src/server/unit_sao.h
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2020-06-04 19:31:46 +0200
committerGitHub <noreply@github.com>2020-06-04 19:31:46 +0200
commitc1e01bc638637efa788b5698238a465406bc3f5e (patch)
treeb4e3abad6b2a51f41e28bc76cacc75002b37c324 /src/server/unit_sao.h
parent0e698e63b3bc27551fda9bd4e66f72501413b4e6 (diff)
downloadminetest-c1e01bc638637efa788b5698238a465406bc3f5e.tar.gz
minetest-c1e01bc638637efa788b5698238a465406bc3f5e.tar.bz2
minetest-c1e01bc638637efa788b5698238a465406bc3f5e.zip
Move shared parameters sending to UnitSAO (#9968)
Better header sorting by topic Make UnitSAO-specific parameters private Skip redundant recursive entity sending code (since ~5.2.0)
Diffstat (limited to 'src/server/unit_sao.h')
-rw-r--r--src/server/unit_sao.h56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/server/unit_sao.h b/src/server/unit_sao.h
index c73115855..3cb7f0ad5 100644
--- a/src/server/unit_sao.h
+++ b/src/server/unit_sao.h
@@ -29,6 +29,11 @@ public:
UnitSAO(ServerEnvironment *env, v3f pos);
virtual ~UnitSAO() = default;
+ u16 getHP() const { return m_hp; }
+ // Use a function, if isDead can be defined by other conditions
+ bool isDead() const { return m_hp == 0; }
+
+ // Rotation
void setRotation(v3f rotation) { m_rotation = rotation; }
const v3f &getRotation() const { return m_rotation; }
v3f getRadRotation() { return m_rotation * core::DEGTORAD; }
@@ -36,26 +41,28 @@ public:
// Deprecated
f32 getRadYawDep() const { return (m_rotation.Y + 90.) * core::DEGTORAD; }
- u16 getHP() const { return m_hp; }
- // Use a function, if isDead can be defined by other conditions
- bool isDead() const { return m_hp == 0; }
-
- inline bool isAttached() const { return getParent(); }
-
+ // Armor groups
inline bool isImmortal() const
{
return itemgroup_get(getArmorGroups(), "immortal");
}
-
void setArmorGroups(const ItemGroupList &armor_groups);
const ItemGroupList &getArmorGroups() const;
+
+ // Animation
void setAnimation(v2f frame_range, float frame_speed, float frame_blend,
bool frame_loop);
void getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend,
bool *frame_loop);
void setAnimationSpeed(float frame_speed);
+
+ // Bone position
void setBonePosition(const std::string &bone, v3f position, v3f rotation);
void getBonePosition(const std::string &bone, v3f *position, v3f *rotation);
+
+ // Attachments
+ ServerActiveObject *getParent() const;
+ inline bool isAttached() const { return getParent(); }
void setAttachment(int parent_id, const std::string &bone, v3f position,
v3f rotation);
void getAttachment(int *parent_id, std::string *bone, v3f *position,
@@ -65,10 +72,13 @@ public:
void addAttachmentChild(int child_id);
void removeAttachmentChild(int child_id);
const std::unordered_set<int> &getAttachmentChildIds() const;
- ServerActiveObject *getParent() const;
+
+ // Object properties
ObjectProperties *accessObjectProperties();
void notifyObjectPropertiesModified();
+ void sendOutdatedData();
+ // Update packets
std::string generateUpdateAttachmentCommand() const;
std::string generateUpdateAnimationSpeedCommand() const;
std::string generateUpdateAnimationCommand() const;
@@ -77,21 +87,36 @@ public:
const v3f &velocity, const v3f &acceleration, const v3f &rotation,
bool do_interpolate, bool is_movement_end, f32 update_interval);
std::string generateSetPropertiesCommand(const ObjectProperties &prop) const;
- void sendPunchCommand();
static std::string generateUpdateBonePositionCommand(const std::string &bone,
const v3f &position, const v3f &rotation);
+ void sendPunchCommand();
protected:
u16 m_hp = 1;
v3f m_rotation;
+ ItemGroupList m_armor_groups;
+
+ // Object properties
bool m_properties_sent = true;
ObjectProperties m_prop;
- ItemGroupList m_armor_groups;
+ // Stores position and rotation for each bone name
+ std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
+
+ int m_attachment_parent_id = 0;
+
+private:
+ void onAttach(int parent_id);
+ void onDetach(int parent_id);
+
+ std::string generatePunchCommand(u16 result_hp) const;
+
+ // Armor groups
bool m_armor_groups_sent = false;
+ // Animation
v2f m_animation_range;
float m_animation_speed = 0.0f;
float m_animation_blend = 0.0f;
@@ -99,20 +124,13 @@ protected:
bool m_animation_sent = false;
bool m_animation_speed_sent = false;
- // Stores position and rotation for each bone name
- std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
+ // Bone positions
bool m_bone_position_sent = false;
- int m_attachment_parent_id = 0;
+ // Attachments
std::unordered_set<int> m_attachment_child_ids;
std::string m_attachment_bone = "";
v3f m_attachment_position;
v3f m_attachment_rotation;
bool m_attachment_sent = false;
-
-private:
- void onAttach(int parent_id);
- void onDetach(int parent_id);
-
- std::string generatePunchCommand(u16 result_hp) const;
};