10#include <quaternion.h>
30 std::unordered_map<scene::TrackId, TrackAnimation>
tracks;
62 void setAnimation(
const scene::TrackId &track, scene::TrackAnimSpec anim_spec)
override;
64 std::optional<scene::TrackAnimSpec>
getAnimation(
const scene::TrackId &track)
const override;
65 std::vector<std::pair<scene::TrackId, scene::TrackAnimSpec>>
73 const std::unordered_map<std::string, BoneOverride>
80 v3f rotation,
bool force_visible)
override;
82 v3f *rotation,
bool *force_visible)
const override;
103 const v3f &velocity,
const v3f &acceleration,
const v3f &rotation,
104 bool do_interpolate,
bool is_movement_end, f32 update_interval,
105 bool do_interpolate_rotation =
true);
u16 object_t
Definition activeobject.h:158
Definition serveractiveobject.h:42
virtual void onMarkedForDeactivation()
Definition serveractiveobject.h:257
ServerActiveObject(ServerEnvironment *env, v3f pos)
Definition serveractiveobject.cpp:12
virtual void onMarkedForRemoval()
Definition serveractiveobject.h:258
Definition serverenvironment.h:113
void setArmorGroups(const ItemGroupList &armor_groups) override
Definition unit_sao.cpp:37
static std::string generateUpdateBoneOverrideCommand(const std::string &bone, const BoneOverride &props)
Definition unit_sao.cpp:349
bool m_bone_override_sent
Definition unit_sao.h:156
void sendPunchCommand()
Definition unit_sao.cpp:484
void clearChildAttachments() override
Definition unit_sao.cpp:270
f32 m_rotation_add_yaw
Definition unit_sao.h:115
std::vector< std::pair< scene::TrackId, scene::TrackAnimSpec > > getAllAnimations() const override
Definition unit_sao.cpp:80
u16 getHP() const override
Definition unit_sao.h:36
bool isDead() const
Definition unit_sao.h:38
u8 m_attachment_call_counter
Definition unit_sao.h:147
std::string generateSetPropertiesCommand(const ObjectProperties &prop) const
Definition unit_sao.cpp:466
ItemGroupList m_armor_groups
Definition unit_sao.h:118
std::unordered_map< std::string, BoneOverride > m_bone_override
Definition unit_sao.h:125
UnitSAO(ServerEnvironment *env, v3f pos)
Definition unit_sao.cpp:11
virtual void onMarkedForRemoval() override
Definition unit_sao.h:134
void notifyObjectPropertiesModified() override
Definition unit_sao.cpp:330
const v3f & getRotation() const
Definition unit_sao.h:46
bool m_properties_sent
Definition unit_sao.h:121
const ItemGroupList & getArmorGroups() const override
Definition unit_sao.cpp:45
std::unordered_set< object_t > m_attachment_child_ids
Definition unit_sao.h:159
ObjectProperties m_prop
Definition unit_sao.h:122
v3f m_attachment_rotation
Definition unit_sao.h:162
bool m_rotation_interpolate
Definition unit_sao.h:116
bool isAttached() const
Definition unit_sao.h:78
f32 getRadYawDep() const
Definition unit_sao.h:51
void onAttach(ServerActiveObject *parent)
Definition unit_sao.cpp:295
core::quaternion getTotalRotation() const
Definition unit_sao.cpp:17
ObjectProperties * accessObjectProperties() override
Definition unit_sao.cpp:325
u16 m_hp
Definition unit_sao.h:112
void setBoneOverride(const std::string &bone, const BoneOverride &props) override
Definition unit_sao.cpp:108
std::string m_attachment_bone
Definition unit_sao.h:160
const std::unordered_map< std::string, BoneOverride > & getBoneOverrides() const override
Definition unit_sao.h:74
BoneOverride getBoneOverride(const std::string &bone) override
Definition unit_sao.cpp:115
v3f m_attachment_position
Definition unit_sao.h:161
void setRotation(v3f rotation)
Definition unit_sao.h:41
void getAttachment(object_t *parent_id, std::string *bone, v3f *position, v3f *rotation, bool *force_visible) const override
Definition unit_sao.cpp:249
bool isAttachmentOutdated() const
Definition unit_sao.h:93
ServerActiveObject * getParent() const override
Definition unit_sao.cpp:27
bool m_force_visible
Definition unit_sao.h:164
virtual ~UnitSAO()=default
void removeAttachmentChild(object_t child_id) override
Definition unit_sao.cpp:290
void sendOutdatedData()
Definition unit_sao.cpp:124
v3f getRadRotation()
Definition unit_sao.h:48
std::string generateUpdateArmorGroupsCommand() const
Definition unit_sao.cpp:427
std::string generateUpdateAnimationCommand(const scene::TrackId &track) const
Definition unit_sao.cpp:395
bool m_armor_groups_sent
Definition unit_sao.h:150
static std::string generateUpdatePositionCommand(const v3f &position, const v3f &velocity, const v3f &acceleration, const v3f &rotation, bool do_interpolate, bool is_movement_end, f32 update_interval, bool do_interpolate_rotation=true)
Definition unit_sao.cpp:439
void setAttachment(object_t parent_id, const std::string &bone, v3f position, v3f rotation, bool force_visible) override
Definition unit_sao.cpp:162
void setRotation(v3f rotation, bool interpolate)
Definition unit_sao.h:42
std::string generateUpdateAnimationSpeedCommand(const scene::TrackId &track) const
Definition unit_sao.cpp:383
bool m_attachment_sent
Definition unit_sao.h:163
std::string generateStopAnimationCommand(const scene::TrackId &track) const
Definition unit_sao.cpp:417
Animation m_animation
Definition unit_sao.h:153
void setAnimation(const scene::TrackId &track, scene::TrackAnimSpec anim_spec) override
Definition unit_sao.cpp:50
bool isImmortal() const
Definition unit_sao.h:54
void stopAnimation(const scene::TrackId &track) override
Definition unit_sao.cpp:58
const Animation & getAnimation() const
Definition unit_sao.h:68
std::string generateUpdateAttachmentCommand() const
Definition unit_sao.cpp:335
std::string generatePunchCommand(u16 result_hp) const
Definition unit_sao.cpp:474
virtual void onMarkedForDeactivation() override
Definition unit_sao.h:130
object_t m_attachment_parent_id
Definition unit_sao.h:127
void clearAnyAttachments()
Definition unit_sao.cpp:259
v3f m_rotation
Definition unit_sao.h:114
const std::unordered_set< object_t > & getAttachmentChildIds() const override
Definition unit_sao.h:86
void setAnimationSpeed(const scene::TrackId &track, f32 fps) override
Definition unit_sao.cpp:91
void onDetach(ServerActiveObject *parent)
Definition unit_sao.cpp:308
void addAttachmentChild(object_t child_id) override
Definition unit_sao.cpp:285
core::vector3df v3f
Definition irr_v3d.h:11
std::unordered_map< std::string, int > ItemGroupList
Definition itemgroup.h:10
static int itemgroup_get(const ItemGroupList &groups, const std::string &name)
Definition itemgroup.h:12
ServerActiveObject::object_t object_t
Definition l_object.cpp:32
v2f PARAM_PVFN interpolate(float fac, const v2f a, const v2f b)
Definition particles.cpp:145
Definition activeobject.h:70
Definition object_properties.h:39
std::unordered_map< scene::TrackId, TrackAnimation > tracks
Definition unit_sao.h:30
State state
Definition unit_sao.h:27
scene::TrackAnimSpec spec
Definition unit_sao.h:19
State
Definition unit_sao.h:20
@ STOPPED
animation has been stopped (not paused), emit AO_CMD_STOP_ANIMATION
Definition unit_sao.h:24
@ NEEDS_RESEND
animation has been started, emit AO_CMD_SET_ANIMATION
Definition unit_sao.h:22
@ SENT
animation state on clients is up to date, nothing to do
Definition unit_sao.h:21
@ NEEDS_SPEED_RESEND
speed has been changed, emit AO_CMD_SET_ANIMATION_SPEED
Definition unit_sao.h:23