mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-01 17:38:41 +00:00
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)
This commit is contained in:
parent
0e698e63b3
commit
c1e01bc638
6 changed files with 110 additions and 115 deletions
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue