]> git.localhorst.tv Git - blank.git/blob - src/model/Skeletons.hpp
store shapes in models rather than meshes
[blank.git] / src / model / Skeletons.hpp
1 #ifndef BLANK_MODEL_SKELETONS_HPP_
2 #define BLANK_MODEL_SKELETONS_HPP_
3
4 #include <cstdint>
5 #include <memory>
6 #include <vector>
7
8
9 namespace blank {
10
11 class Model;
12 class ShapeRegistry;
13
14 class Skeletons {
15
16 public:
17         using size_type = std::size_t;
18         using reference = Model &;
19         using const_reference = const Model &;
20
21 public:
22         Skeletons();
23         ~Skeletons();
24
25         void Load(const ShapeRegistry &);
26
27         size_type size() const noexcept { return skeletons.size(); }
28
29         reference operator[](size_type i) noexcept { return *skeletons[i]; }
30         const_reference operator[](size_type i) const noexcept { return *skeletons[i]; }
31
32         Model *ByID(std::uint16_t) noexcept;
33         const Model *ByID(std::uint16_t) const noexcept;
34
35 private:
36         std::vector<std::unique_ptr<Model>> skeletons;
37
38 };
39
40 }
41
42 #endif