Wrath of Zeus
Made by Torchlight Games for CSE 125 SP24
Loading...
Searching...
No Matches
bone.hpp
Go to the documentation of this file.
1#pragma once
2
3/* Container for bone data */
4
5#include <vector>
6#include <assimp/scene.h>
7#include <list>
8#include <glm/glm.hpp>
9
10#define GLM_ENABLE_EXPERIMENTAL
11#include <glm/gtx/quaternion.hpp>
12#include "client/util.hpp"
13
15{
16 glm::vec3 position;
17 float timeStamp;
18};
19
21{
22 glm::quat orientation;
23 float timeStamp;
24};
25
27{
28 glm::vec3 scale;
29 float timeStamp;
30};
31
32class Bone
33{
34public:
35 Bone(const std::string& name, int ID, const aiNodeAnim* channel);
36
37 void update(float animationTime);
38
39 glm::mat4 getLocalTransform() { return m_localTransform; }
40 std::string getBoneName() const { return m_name; }
41 int getBoneID() { return m_ID; }
42
43 int getPositionIndex(float animationTime);
44
45 int getRotationIndex(float animationTime);
46
47 int getScaleIndex(float animationTime);
48
49private:
50
51 float getScaleFactor(float lastTimeStamp, float nextTimeStamp, float animationTime);
52
53 glm::mat4 interpolatePosition(float animationTime);
54
55 glm::mat4 interpolateRotation(float animationTime);
56
57 glm::mat4 interpolateScaling(float animationTime);
58
59 std::vector<keyPosition> m_positions;
60 std::vector<keyRotation> m_rotations;
61 std::vector<keyScale> m_scales;
62 int m_numPositions;
63 int m_numRotations;
64 int m_numScalings;
65
66 glm::mat4 m_localTransform;
67 std::string m_name;
68 int m_ID;
69};
Definition: bone.hpp:33
int getScaleIndex(float animationTime)
Definition: bone.cpp:65
int getBoneID()
Definition: bone.hpp:41
std::string getBoneName() const
Definition: bone.hpp:40
glm::mat4 getLocalTransform()
Definition: bone.hpp:39
int getPositionIndex(float animationTime)
Definition: bone.cpp:47
int getRotationIndex(float animationTime)
Definition: bone.cpp:56
void update(float animationTime)
Definition: bone.cpp:40
GLuint const GLchar * name
Definition: glad.h:1846
Definition: bone.hpp:15
float timeStamp
Definition: bone.hpp:17
glm::vec3 position
Definition: bone.hpp:16
Definition: bone.hpp:21
float timeStamp
Definition: bone.hpp:23
glm::quat orientation
Definition: bone.hpp:22
Definition: bone.hpp:27
glm::vec3 scale
Definition: bone.hpp:28
float timeStamp
Definition: bone.hpp:29