4#include <J3ML/LinearAlgebra/Vector3.hpp>
5#include <J3ML/LinearAlgebra/Matrix4x4.hpp>
6#include <unordered_map>
18 std::array<int, 4> bone_ids = { 0, 0, 0, 0 };
19 std::array<float, 4> bone_weights = { 0, 0, 0, 0 };
26 SkeletalVertex(
const Vector3& rhs,
const std::vector<int>& bone_ids,
const std::vector<float>& bone_weights);
34 Matrix4x4 inverse_bind_matrix = Matrix4x4::Identity;
35 Matrix4x4 offset_matrix = Matrix4x4::Identity;
36 Matrix4x4 final_transform = Matrix4x4::Identity;
38 std::vector<int> children{};
40 [[nodiscard]]
int GetID()
const;
41 [[nodiscard]] std::string
GetName()
const;
52 void SetID(
int numeric_id);
53 void SetName(
const std::string& string_id);
60 explicit Bone(
int numeric_id,
const std::string& string_id =
"",
int parent_id = -1,
const std::vector<int>& children_ids = {},
61 const Matrix4x4& inverse_bind = Matrix4x4::Identity,
const Matrix4x4& offset = Matrix4x4::Identity,
const Matrix4x4&
final = Matrix4x4::Identity);
67 std::vector<Bone> bones;
71 [[nodiscard]]
Bone*
FindBone(
const std::string& string_id);
75 explicit Skeleton(
const Bone& root_bone,
const std::vector<Bone>& children = {});
94 std::vector<KeyFrame> key_frames;
97 [[nodiscard]] std::vector<KeyFrame>
GetKeyFrames()
const;
102 explicit Animation(
float duration,
const std::vector<KeyFrame>& key_frames = {});
Definition: Skeleton.h:91
std::vector< KeyFrame > GetKeyFrames() const
Definition: Skeleton.cpp:153
void AppendKeyFrame(const KeyFrame &new_key)
Definition: Skeleton.cpp:157
float GetDuratrion() const
Definition: Skeleton.cpp:149
void SetDuration(float duration)
Definition: Skeleton.cpp:161
Animation(float duration, const std::vector< KeyFrame > &key_frames={})
Definition: Skeleton.cpp:144
Definition: Skeleton.h:29
int GetParentID() const
Definition: Skeleton.cpp:83
void SetName(const std::string &string_id)
Definition: Skeleton.cpp:67
void SetFinalTransformMatrix(const Matrix4x4 &final)
Definition: Skeleton.cpp:79
Matrix4x4 GetFinalTransform() const
Definition: Skeleton.cpp:47
bool IsRootBone() const
Definition: Skeleton.cpp:25
void AppendChild(int new_child)
Definition: Skeleton.cpp:59
std::string GetName() const
Definition: Skeleton.cpp:35
void SetOffsetMatrix(const Matrix4x4 &offset)
Definition: Skeleton.cpp:75
void SetID(int numeric_id)
Definition: Skeleton.cpp:63
int GetID() const
Definition: Skeleton.cpp:31
void SetInverseBindMatrix(const Matrix4x4 &inverse_bind)
Definition: Skeleton.cpp:71
Matrix4x4 GetOffsetMatrix() const
Definition: Skeleton.cpp:43
std::vector< int > GetChildren() const
Definition: Skeleton.cpp:51
void SetParent(int parent_id)
Definition: Skeleton.cpp:55
Matrix4x4 GetInverseBindMatrix() const
Definition: Skeleton.cpp:39
Definition: Skeleton.h:80
float GetTimeStamp() const
Definition: Skeleton.cpp:131
Skeleton GetSkeleton() const
Definition: Skeleton.cpp:135
KeyFrame(const Skeleton &pose, float time_stamp)
Definition: Skeleton.cpp:139
Definition: Skeleton.h:16
std::array< int, 4 > GetAffectingBoneIDs() const
Definition: Skeleton.cpp:7
std::array< float, 4 > GetAffectingBoneWeights() const
Definition: Skeleton.cpp:11
Definition: Skeleton.h:64
Bone * FindBone(int id)
Definition: Skeleton.cpp:101
Bone * GetRootBone()
Definition: Skeleton.cpp:97
void AppendBone(const Bone &bone)
Definition: Skeleton.cpp:122
OpenGL Wrapper for rendering 2D & 3D graphics in both a 2D and 3D context.
Definition: JGL.h:31