A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
KartObjectManager.hh
1#pragma once
2
3#include "game/kart/KartObject.hh"
4
5#include <abstract/g3d/ResAnmChr.hh>
6
7namespace Kinoko {
8
9namespace Host {
10
11class Context;
12
13} // namespace Host
14
15namespace Kart {
16
21 friend class Host::Context;
22
23public:
24 void init();
25 void calc();
26
29 [[nodiscard]] KartObject *object(size_t i) const {
30 ASSERT(i < m_count);
31 return m_objects[i];
32 }
34
35 static KartObjectManager *CreateInstance();
36 static void DestroyInstance();
37
38 [[nodiscard]] static const Abstract::g3d::ResAnmChr *ThunderScaleUpAnmChr() {
39 return s_thunderScaleUpAnmChr;
40 }
41
42 [[nodiscard]] static const Abstract::g3d::ResAnmChr *ThunderScaleDownAnmChr() {
43 return s_thunderScaleDownAnmChr;
44 }
45
46 [[nodiscard]] static const Abstract::g3d::ResAnmChr *PressScaleUpAnmChr() {
47 return s_pressScaleUpAnmChr;
48 }
49
50 [[nodiscard]] static KartObjectManager *Instance() {
51 return s_instance;
52 }
53
54private:
56 ~KartObjectManager() override;
57
58 void loadScaleAnimations();
59
60 size_t m_count;
61 KartObject **m_objects;
62
63 static Abstract::g3d::ResAnmChr *s_thunderScaleUpAnmChr;
64 static Abstract::g3d::ResAnmChr *s_thunderScaleDownAnmChr;
65 static Abstract::g3d::ResAnmChr *s_pressScaleUpAnmChr;
66 static KartObjectManager *s_instance;
67};
68
69} // namespace Kart
70
71} // namespace Kinoko
Represents the CHR0 file format, which pertains to model movement animations.
Definition ResAnmChr.hh:46
An interface for ensuring certain structures and classes are destroyed with the heap.
Definition Disposer.hh:11
Contexts can be used to restore a previous memory state for the current session.
Definition Context.hh:71
Responsible for the lifecycle and calculation of KartObjects.
The highest level abstraction for a kart.
Definition KartObject.hh:11