Monad Engine da02fba2
> Undercity Codex_
Loading...
Searching...
No Matches
Skeleton.cpp
Go to the documentation of this file.
2
3#define GLM_ENABLE_EXPERIMENTAL
4#include <glm/gtx/matrix_decompose.hpp>
5
6namespace mnd
7{
8
9void Skeleton::AddBone(const Bone &bone)
10{
11 Bone copy = bone;
12
13 glm::vec3 skew;
14 glm::vec4 perspective;
15 glm::decompose(copy.localBind, copy.bindScale, copy.bindRot, copy.bindPos, skew, perspective);
16
17 m_nameToIndex[copy.name] = m_bones.size();
18 m_bones.push_back(copy);
19}
20
21i32 Skeleton::FindBoneIndex(const std::string &name) const
22{
23 auto it = m_nameToIndex.find(name);
24 if (it == m_nameToIndex.end())
25 {
26 return -1;
27 }
28 return static_cast<i32>(it->second);
29}
30
31} // namespace mnd
Bone hierarchy + bind/offset matrices for GPU-skinned meshes.
i32 FindBoneIndex(const std::string &name) const
Definition Skeleton.cpp:21
void AddBone(const Bone &bone)
Definition Skeleton.cpp:9
int32_t i32
Signed 32-bit integer — used for GL enums and sizes.
Definition Types.h:37
glm::vec3 bindPos
Definition Skeleton.h:32
glm::quat bindRot
Definition Skeleton.h:33
std::string name
Definition Skeleton.h:24
glm::mat4 localBind
Local bind transform (relative to parent).
Definition Skeleton.h:26
glm::vec3 bindScale
Definition Skeleton.h:34