A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
RailManager.hh
1#pragma once
2
3#include "game/field/RailInterpolator.hh"
4
5#include <vector>
6
7namespace Kinoko {
8
9namespace Host {
10
11class Context;
12
13} // namespace Host
14
15namespace Field {
16
17// TODO: Inherit EGG::Disposer
19 friend class Host::Context;
20
21public:
23 [[nodiscard]] Rail *rail(size_t idx) {
24 ASSERT(idx < m_rails.size());
25 return m_rails[idx];
26 }
27
28 [[nodiscard]] const Rail *rail(size_t idx) const {
29 ASSERT(idx < m_rails.size());
30 return m_rails[idx];
31 }
33
34 static RailManager *CreateInstance();
35 static void DestroyInstance();
36
37 [[nodiscard]] static RailManager *Instance() {
38 return s_instance;
39 }
40
41private:
44
45 void createPaths();
46
47 std::vector<Rail *> m_rails;
48 u16 m_totalRails;
49 u16 m_extraInterplatorCount;
50 u16 m_pointCount;
51
52 static RailManager *s_instance;
53};
54
55} // namespace Field
56
57} // namespace Kinoko
Contexts can be used to restore a previous memory state for the current session.
Definition Context.hh:71