OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
skeleton.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Matrix4x4>
4
5#include <zenkit/ModelHierarchy.hh>
6
7#include <vector>
8
9#include "animation.h"
10
11class Skeleton final {
12 public:
13 Skeleton(const zenkit::ModelHierarchy& src, const Animation* anim, std::string_view name);
14
15 struct Node final {
16 size_t parent=size_t(-1);
17 Tempest::Matrix4x4 tr;
18 std::string name;
19 };
20
21 bool ordered=true;
22 std::vector<Node> nodes;
23 std::vector<size_t> rootNodes;
24 std::vector<Tempest::Matrix4x4> tr;
25 Tempest::Vec3 rootTr={};
26
27 size_t BIP01_HEAD = size_t(-1);
28
29 Tempest::Vec3 bboxCol[2]={};
30
31 size_t findNode(std::string_view name, size_t def=size_t(-1)) const;
32 size_t findRootNode() const;
33
34 std::string_view name() const { return fileName; }
35 const Animation::Sequence* sequence(std::string_view name) const;
36 const Animation* animation() const { return anim; }
37 std::string_view defaultMesh() const;
38
39 float colisionHeight() const;
40
41 void debug() const;
42
43 private:
44 std::string fileName;
45 const Animation* anim=nullptr;
46
47 void mkSkeleton();
48 void mkSkeleton(const Tempest::Matrix4x4& mt,size_t parent);
49 };
const Animation * animation() const
Definition skeleton.h:36
const Animation::Sequence * sequence(std::string_view name) const
Definition skeleton.cpp:68
void debug() const
Definition skeleton.cpp:74
Tempest::Vec3 bboxCol[2]
Definition skeleton.h:29
std::vector< size_t > rootNodes
Definition skeleton.h:23
bool ordered
Definition skeleton.h:21
std::string_view defaultMesh() const
Definition skeleton.cpp:79
size_t findNode(std::string_view name, size_t def=size_t(-1)) const
Definition skeleton.cpp:52
std::vector< Node > nodes
Definition skeleton.h:22
Tempest::Vec3 rootTr
Definition skeleton.h:25
size_t BIP01_HEAD
Definition skeleton.h:27
size_t findRootNode() const
Definition skeleton.cpp:61
std::string_view name() const
Definition skeleton.h:34
float colisionHeight() const
Definition skeleton.cpp:85
std::vector< Tempest::Matrix4x4 > tr
Definition skeleton.h:24
std::string name
Definition skeleton.h:18
size_t parent
Definition skeleton.h:16
Tempest::Matrix4x4 tr
Definition skeleton.h:17