void setHP(s16 hp);
s16 getHP() const;
void setArmorGroups(const ItemGroupList &armor_groups);
- void setAnimation(v2f frame_range, float frame_speed, float frame_blend);
- void setBonePosition(std::string bone, v3f position, v3f rotation);
- void setAttachment(int parent_id, std::string bone, v3f position, v3f rotation);
+ ItemGroupList getArmorGroups();
+ 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 setBonePosition(const std::string &bone, v3f position, v3f rotation);
+ void getBonePosition(const std::string &bone, v3f *position, v3f *rotation);
+ void setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation);
+ void getAttachment(int *parent_id, std::string *bone, v3f *position, v3f *rotation);
+ void addAttachmentChild(int child_id);
+ void removeAttachmentChild(int child_id);
+ UNORDERED_SET<int> getAttachmentChildIds();
ObjectProperties* accessObjectProperties();
void notifyObjectPropertiesModified();
/* LuaEntitySAO-specific */
std::string m_init_state;
bool m_registered;
struct ObjectProperties m_prop;
-
+
s16 m_hp;
v3f m_velocity;
v3f m_acceleration;
float m_yaw;
ItemGroupList m_armor_groups;
-
+
bool m_properties_sent;
float m_last_sent_yaw;
v3f m_last_sent_position;
v2f m_animation_range;
float m_animation_speed;
float m_animation_blend;
+ bool m_animation_loop;
bool m_animation_sent;
- std::map<std::string, core::vector2d<v3f> > m_bone_position;
+ UNORDERED_MAP<std::string, core::vector2d<v3f> > m_bone_position;
bool m_bone_position_sent;
int m_attachment_parent_id;
+ UNORDERED_SET<int> m_attachment_child_ids;
std::string m_attachment_bone;
v3f m_attachment_position;
v3f m_attachment_rotation;
class PlayerSAO : public ServerActiveObject
{
public:
- PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_,
+ PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, u16 peer_id_,
const std::set<std::string> &privs, bool is_singleplayer);
~PlayerSAO();
ActiveObjectType getType() const
u16 getBreath() const;
void setBreath(u16 breath);
void setArmorGroups(const ItemGroupList &armor_groups);
- void setAnimation(v2f frame_range, float frame_speed, float frame_blend);
- void setBonePosition(std::string bone, v3f position, v3f rotation);
- void setAttachment(int parent_id, std::string bone, v3f position, v3f rotation);
+ ItemGroupList getArmorGroups();
+ 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 setBonePosition(const std::string &bone, v3f position, v3f rotation);
+ void getBonePosition(const std::string &bone, v3f *position, v3f *rotation);
+ void setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation);
+ void getAttachment(int *parent_id, std::string *bone, v3f *position, v3f *rotation);
+ void addAttachmentChild(int child_id);
+ void removeAttachmentChild(int child_id);
+ UNORDERED_SET<int> getAttachmentChildIds();
ObjectProperties* accessObjectProperties();
void notifyObjectPropertiesModified();
Inventory* getInventory();
const Inventory* getInventory() const;
InventoryLocation getInventoryLocation() const;
- void setInventoryModified();
std::string getWieldList() const;
int getWieldIndex() const;
void setWieldIndex(int i);
void disconnected();
- Player* getPlayer()
- {
- return m_player;
- }
- u16 getPeerID() const
- {
- return m_peer_id;
- }
+ RemotePlayer* getPlayer() { return m_player; }
+ u16 getPeerID() const { return m_peer_id; }
// Cheat prevention
private:
std::string getPropertyPacket();
-
- Player *m_player;
+
+ RemotePlayer *m_player;
u16 m_peer_id;
Inventory *m_inventory;
s16 m_damage;
v2f m_animation_range;
float m_animation_speed;
float m_animation_blend;
+ bool m_animation_loop;
bool m_animation_sent;
- std::map<std::string, core::vector2d<v3f> > m_bone_position; // Stores position and rotation for each bone name
+ // Stores position and rotation for each bone name
+ UNORDERED_MAP<std::string, core::vector2d<v3f> > m_bone_position;
bool m_bone_position_sent;
int m_attachment_parent_id;
+ UNORDERED_SET<int> m_attachment_child_ids;
std::string m_attachment_bone;
v3f m_attachment_position;
v3f m_attachment_rotation;
bool m_attachment_sent;
-public:
- // Some flags used by Server
- bool m_moved;
- bool m_inventory_not_sent;
- bool m_wielded_item_not_sent;
+public:
float m_physics_override_speed;
float m_physics_override_jump;
float m_physics_override_gravity;
};
#endif
-