Inherited Members
public:
// structs
struct BaseProperty;
template <class T>
struct Property;
// fields
cogs::Transform transform;
// methods
Skeleton& operator=(const Skeleton& skeleton);
std::string GetName() const;
void SetName(const std::string& new_name);
std::vector<Bone*> GetAllBones() const;
std::vector<std::string> GetAllBoneCaptions() const;
std::vector<Bone*> GetBones(const std::vector<std::string>& bone_captions) const;
Bone* GetBone(const uint32_t id) const;
Bone* GetBone(const std::string& bone_caption) const;
std::vector<Bone*> GetRootBones() const;
void Clear();
unsigned GetBoneCount() const;
Bone* AddBone(const std::string& name, const std::string& parent_name, const glm::vec3& tail_position);
Bone* AddBone(const std::string& name, const std::string& parent_name, const BoneTransform& transform);
Bone* AddBoneToRoot(const std::string& name, const glm::vec3& tail_position);
Bone* AddBoneToRoot(const std::string& name, const BoneTransform& transform);
void RollBasis(const std::string& bone_name, const float roll_angle);
void ApplyBoneLengths(const std::vector<float>& bone_lengths);
void SortBySkeleton(const cogs::Skeleton& ref_skeleton);
void InterpolateTo(const cogs::Skeleton& target_skel, float target_weight, cogs::Skeleton* out_skeleton) const;
SkeletonPose GetCurrentPose() const;
SkeletonPose GetCurrentPose(const std::vector<std::string>& bone_order) const;
void ApplyPose(const SkeletonPose& pose, bool ignore_root_transform = false);
void ApplyBindpose();
void ApplyCurrentPoseAsBindpose();
BaseProperty* GetProperty(const std::string& prop) const;
template <class T>
T GetProperty(const std::string& prop) const;
template <class T>
void SetProperty(const std::string& prop, const T& value);
bool HasProperty(const std::string& prop) const;
protected:
// fields
std::string name_;
cogs::Transform bind_transform;
std::unordered_map<std::string, BaseProperty*> properties_;
std::map<std::string, Bone*> bone_for_name_;
std::vector<Bone*> bones_;
std::vector<Bone*> root_bones_;
unsigned bone_count_ = 0;
// methods
Bone* CreateNewBone(const std::string& caption);
Bone* CreateBoneClone(const cogs::Bone* bone);
void MakeCloneOf(const Skeleton& skeleton);
void OnTransformChange();