#pragma once #include "ehs/EHS.h" #include "ehs/Quat.h" #include "ehs/Mat4.h" namespace ehs { class EHS_LIB_IO Bone { private: UInt_64 hashName; Str_8 name; UInt_8 id; Mat4_f animTrans; Mat4_f localBindTrans; Mat4_f invBindTrans; Array children; public: Bone(); Bone(Str_8 name, UInt_8 id, const Mat4_f& localBindTrans, const Mat4_f& invBindTrans); Bone(Bone&& bone) noexcept; Bone(const Bone& bone); Bone& operator=(Bone&& bone) noexcept; Bone& operator=(const Bone& bone); UInt_64 GetHashName() const; void SetName(Str_8 newId); Str_8 GetName() const; UInt_8 GetId() const; void SetAnimTrans(const Mat4_f& newTrans); Mat4_f GetAnimTrans() const; void GetAnimTransRec(Array& output) const; Mat4_f GetLocalBindTrans() const; Mat4_f GetInvBindTrans() const; UInt_8 GetBoneCount() const; bool HasBone(UInt_64 hashName, UInt_8 id) const; bool HasBone(UInt_64 hashName) const; bool HasBone(UInt_8 id) const; bool AddBone(Bone child); const Bone* GetBone(UInt_64 hashName) const; Bone* GetBone(UInt_64 hashName); const Bone* GetBone(UInt_8 id) const; Bone* GetBone(UInt_8 id); const Array& GetChildren() const; Array& GetChildren(); }; }