Kinoko
v0.6
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
RaceScene.cc
Go to the documentation of this file.
1
#include "
RaceScene.hh
"
2
3
#include "
game/field/BoxColManager.hh
"
4
#include "
game/field/CollisionDirector.hh
"
5
#include "
game/field/ObjectDirector.hh
"
6
#include "
game/field/RailManager.hh
"
7
#include "
game/field/jugem/JugemDirector.hh
"
8
#include "
game/item/ItemDirector.hh
"
9
#include "
game/kart/KartObjectManager.hh
"
10
#include "
game/render/KartCamera.hh
"
11
#include "
game/system/CourseMap.hh
"
12
#include "
game/system/KPadDirector.hh
"
13
#include "
game/system/RaceConfig.hh
"
14
#include "
game/system/RaceManager.hh
"
15
#include "
game/system/ResourceManager.hh
"
16
17
#include <
ScopeLock.hh
>
18
19
namespace
Kinoko::Scene
{
20
22
RaceScene::RaceScene
() {
23
m_heap
->
setName
(
"RaceSceneHeap"
);
24
}
25
27
RaceScene::~RaceScene
() =
default
;
28
30
void
RaceScene::createEngines
() {
31
{
32
ScopeLock<GroupID>
lock(
GroupID::Gfx
);
33
Render::KartCamera::CreateInstance
();
34
}
35
36
{
37
ScopeLock<GroupID>
lock(
GroupID::Course
);
38
System::CourseMap::CreateInstance
()->
init
();
39
}
40
41
{
42
ScopeLock<GroupID>
lock(
GroupID::Race
);
43
System::RaceManager::CreateInstance
();
44
}
45
46
{
47
ScopeLock<GroupID>
lock(
GroupID::Object
);
48
Field::BoxColManager::CreateInstance
();
49
Field::JugemDirector::CreateInstance
();
50
}
51
52
{
53
ScopeLock<GroupID>
lock(
GroupID::Kart
);
54
Kart::KartObjectManager::CreateInstance
();
55
}
56
57
{
58
ScopeLock<GroupID>
lock(
GroupID::Course
);
59
Field::CollisionDirector::CreateInstance
();
60
}
61
62
{
63
ScopeLock<GroupID>
lock(
GroupID::Item
);
64
Item::ItemDirector::CreateInstance
();
65
}
66
67
{
68
ScopeLock<GroupID>
lock(
GroupID::Object
);
69
Field::RailManager::CreateInstance
();
70
Field::ObjectDirector::CreateInstance
();
71
}
72
}
73
75
void
RaceScene::initEngines
() {
76
{
77
ScopeLock<GroupID>
lock(
GroupID::Kart
);
78
Kart::KartObjectManager::Instance
()->
init
();
79
}
80
81
{
82
ScopeLock<GroupID>
lock(
GroupID::Gfx
);
83
initCamera
();
84
}
85
86
{
87
ScopeLock<GroupID>
lock(
GroupID::Race
);
88
System::RaceManager::Instance
()->
init
();
89
}
90
91
{
92
ScopeLock<GroupID>
lock(
GroupID::Item
);
93
Item::ItemDirector::Instance
()->
init
();
94
}
95
96
{
97
ScopeLock<GroupID>
lock(
GroupID::Object
);
98
Field::ObjectDirector::Instance
()->
init
();
99
Field::JugemDirector::Instance
()->
init
();
100
}
101
102
m_heap
->
disableAllocation
();
103
}
104
108
void
RaceScene::calcEngines
() {
109
auto
*raceMgr =
System::RaceManager::Instance
();
110
raceMgr->calc();
111
Field::BoxColManager::Instance
()->
calc
();
112
Field::ObjectDirector::Instance
()->
calc
();
113
Kart::KartObjectManager::Instance
()->
calc
();
114
Field::JugemDirector::Instance
()->
calc
();
115
Item::ItemDirector::Instance
()->
calc
();
116
raceMgr->random().next();
117
}
118
120
void
RaceScene::destroyEngines
() {
121
System::KPadDirector::Instance
()->
endGhostProxies
();
122
Render::KartCamera::DestroyInstance
();
123
Kart::KartObjectManager::DestroyInstance
();
124
Field::JugemDirector::DestroyInstance
();
125
Field::ObjectDirector::DestroyInstance
();
126
Field::RailManager::DestroyInstance
();
127
Field::CollisionDirector::DestroyInstance
();
128
Item::ItemDirector::DestroyInstance
();
129
Field::BoxColManager::DestroyInstance
();
130
System::RaceManager::DestroyInstance
();
131
System::CourseMap::DestroyInstance
();
132
}
133
136
void
RaceScene::configure
() {
137
auto
*raceCfg =
System::RaceConfig::Instance
();
138
auto
*resMgr =
System::ResourceManager::Instance
();
139
140
raceCfg->initRace();
141
142
// Normally, the resources are loaded into a specific archive heap
143
// For now, tag them with the resource group ID
144
{
145
ScopeLock<GroupID>
lock(
GroupID::Resource
);
146
auto
*commonArc = resMgr->load(0,
nullptr
);
147
appendResource
(commonArc, 0);
148
149
auto
*courseArc = resMgr->load(raceCfg->raceScenario().course);
150
appendResource
(courseArc, 1);
151
}
152
}
153
156
void
RaceScene::onReinit
() {
157
configure
();
158
}
159
160
}
// namespace Kinoko::Scene
BoxColManager.hh
CollisionDirector.hh
CourseMap.hh
ItemDirector.hh
JugemDirector.hh
KPadDirector.hh
KartCamera.hh
KartObjectManager.hh
ObjectDirector.hh
RaceConfig.hh
RaceManager.hh
RaceScene.hh
RailManager.hh
ResourceManager.hh
ScopeLock.hh
Kinoko::EGG::Heap::disableAllocation
void disableAllocation()
Definition
Heap.hh:48
Kinoko::EGG::Heap::setName
void setName(const char *name)
Definition
Heap.hh:92
Kinoko::EGG::Scene::m_heap
Heap * m_heap
Definition
Scene.hh:81
Kinoko::Field::BoxColManager::calc
void calc()
Recalculate the bounds of all active units having PermRecalcAABB or TempRecalcAABB flag,...
Definition
BoxColManager.cc:94
Kinoko::Field::BoxColManager::DestroyInstance
static void DestroyInstance()
Definition
BoxColManager.cc:350
Kinoko::Field::BoxColManager::CreateInstance
static BoxColManager * CreateInstance()
Definition
BoxColManager.cc:343
Kinoko::Field::BoxColManager::Instance
static BoxColManager * Instance()
Definition
BoxColManager.cc:357
Kinoko::Field::CollisionDirector::CreateInstance
static CollisionDirector * CreateInstance()
Definition
CollisionDirector.cc:301
Kinoko::Field::CollisionDirector::DestroyInstance
static void DestroyInstance()
Definition
CollisionDirector.cc:308
Kinoko::Field::JugemDirector::init
void init()
Definition
JugemDirector.hh:13
Kinoko::Field::JugemDirector::calc
void calc()
Definition
JugemDirector.cc:13
Kinoko::Field::JugemDirector::Instance
static JugemDirector * Instance()
Definition
JugemDirector.cc:27
Kinoko::Field::JugemDirector::CreateInstance
static JugemDirector * CreateInstance()
Definition
JugemDirector.cc:20
Kinoko::Field::JugemDirector::DestroyInstance
static void DestroyInstance()
Definition
JugemDirector.cc:32
Kinoko::Field::ObjectDirector::init
void init()
Definition
ObjectDirector.cc:16
Kinoko::Field::ObjectDirector::calc
void calc()
Definition
ObjectDirector.cc:38
Kinoko::Field::ObjectDirector::DestroyInstance
static void DestroyInstance()
Definition
ObjectDirector.cc:149
Kinoko::Field::ObjectDirector::CreateInstance
static ObjectDirector * CreateInstance()
Definition
ObjectDirector.cc:137
Kinoko::Field::ObjectDirector::Instance
static ObjectDirector * Instance()
Definition
ObjectDirector.hh:88
Kinoko::Field::RailManager::DestroyInstance
static void DestroyInstance()
Definition
RailManager.cc:17
Kinoko::Field::RailManager::CreateInstance
static RailManager * CreateInstance()
Definition
RailManager.cc:9
Kinoko::Item::ItemDirector::init
void init()
Definition
ItemDirector.cc:8
Kinoko::Item::ItemDirector::calc
void calc()
Definition
ItemDirector.cc:15
Kinoko::Item::ItemDirector::CreateInstance
static ItemDirector * CreateInstance()
Definition
ItemDirector.cc:22
Kinoko::Item::ItemDirector::DestroyInstance
static void DestroyInstance()
Definition
ItemDirector.cc:29
Kinoko::Item::ItemDirector::Instance
static ItemDirector * Instance()
Definition
ItemDirector.hh:38
Kinoko::Kart::KartObjectManager::init
void init()
Definition
KartObjectManager.cc:12
Kinoko::Kart::KartObjectManager::Instance
static KartObjectManager * Instance()
Definition
KartObjectManager.hh:50
Kinoko::Kart::KartObjectManager::calc
void calc()
Definition
KartObjectManager.cc:20
Kinoko::Kart::KartObjectManager::DestroyInstance
static void DestroyInstance()
Definition
KartObjectManager.cc:42
Kinoko::Kart::KartObjectManager::CreateInstance
static KartObjectManager * CreateInstance()
Definition
KartObjectManager.cc:35
Kinoko::Render::KartCamera::DestroyInstance
static void DestroyInstance()
Definition
KartCamera.cc:47
Kinoko::Render::KartCamera::CreateInstance
static KartCamera * CreateInstance()
Definition
KartCamera.cc:41
Kinoko::Scene::GameScene::appendResource
void appendResource(System::MultiDvdArchive *archive, s32 id)
Definition
GameScene.cc:91
Kinoko::Scene::GameScene::initCamera
static void initCamera()
Definition
GameScene.cc:81
Kinoko::Scene::RaceScene::createEngines
void createEngines() override
Definition
RaceScene.cc:30
Kinoko::Scene::RaceScene::initEngines
void initEngines() override
Definition
RaceScene.cc:75
Kinoko::Scene::RaceScene::~RaceScene
~RaceScene() override
Kinoko::Scene::RaceScene::destroyEngines
void destroyEngines() override
Definition
RaceScene.cc:120
Kinoko::Scene::RaceScene::RaceScene
RaceScene()
Definition
RaceScene.cc:22
Kinoko::Scene::RaceScene::configure
void configure() override
Retrieves Common.szs and the course archive.
Definition
RaceScene.cc:136
Kinoko::Scene::RaceScene::calcEngines
void calcEngines() override
Definition
RaceScene.cc:108
Kinoko::Scene::RaceScene::onReinit
void onReinit() override
This is called on race shutdown in order to prep for the next race.
Definition
RaceScene.cc:156
Kinoko::ScopeLock
Definition
ScopeLock.hh:10
Kinoko::System::CourseMap::init
void init()
Definition
CourseMap.cc:8
Kinoko::System::CourseMap::DestroyInstance
static void DestroyInstance()
Definition
CourseMap.cc:234
Kinoko::System::CourseMap::CreateInstance
static CourseMap * CreateInstance()
Definition
CourseMap.cc:227
Kinoko::System::KPadDirector::endGhostProxies
void endGhostProxies()
Definition
KPadDirector.cc:28
Kinoko::System::KPadDirector::Instance
static KPadDirector * Instance()
Definition
KPadDirector.hh:45
Kinoko::System::RaceConfig::Instance
static RaceConfig * Instance()
Definition
RaceConfig.hh:82
Kinoko::System::RaceManager::init
void init()
Definition
RaceManager.cc:15
Kinoko::System::RaceManager::Instance
static RaceManager * Instance()
Definition
RaceManager.hh:153
Kinoko::System::RaceManager::CreateInstance
static RaceManager * CreateInstance()
Definition
RaceManager.cc:77
Kinoko::System::RaceManager::DestroyInstance
static void DestroyInstance()
Definition
RaceManager.cc:84
Kinoko::System::ResourceManager::Instance
static ResourceManager * Instance()
Definition
ResourceManager.hh:42
Kinoko::Scene
Pertains to scene handling.
Definition
GameScene.cc:10
Kinoko::GroupID::Course
@ Course
Definition
Common.hh:171
Kinoko::GroupID::Object
@ Object
Definition
Common.hh:170
Kinoko::GroupID::Race
@ Race
Definition
Common.hh:167
Kinoko::GroupID::Gfx
@ Gfx
Definition
Common.hh:168
Kinoko::GroupID::Item
@ Item
Definition
Common.hh:177
Kinoko::GroupID::Kart
@ Kart
Definition
Common.hh:169
Kinoko::GroupID::Resource
@ Resource
Definition
Common.hh:175
game
scene
RaceScene.cc
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.18.0