Kinoko
v0.6
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
RootScene.cc
Go to the documentation of this file.
1
#include "
RootScene.hh
"
2
3
#include "
game/system/KPadDirector.hh
"
4
#include "
game/system/RaceConfig.hh
"
5
#include "
game/system/ResourceManager.hh
"
6
7
#include <
egg/core/SceneManager.hh
>
8
#include <
host/SceneId.hh
>
9
10
#include <
ScopeLock.hh
>
11
12
namespace
Kinoko::Scene
{
13
15
RootScene::RootScene
() {
16
m_heap
->
setName
(
"RootSceneHeap"
);
17
}
18
20
RootScene::~RootScene
() =
default
;
21
23
void
RootScene::enter
() {
24
allocate
();
25
init
();
26
#ifdef BUILD_DEBUG
27
checkMemory();
28
#endif
// BUILD_DEBUG
29
m_sceneMgr
->
createChildScene
(
static_cast<
int
>
(
Host::SceneId::Race
),
this
);
30
}
31
33
void
RootScene::allocate
() {
34
{
35
ScopeLock<GroupID>
lock(
GroupID::Resource
);
36
System::ResourceManager::CreateInstance
();
37
}
38
39
{
40
ScopeLock<GroupID>
lock(
GroupID::Race
);
41
System::KPadDirector::CreateInstance
();
42
System::RaceConfig::CreateInstance
();
43
}
44
}
45
47
void
RootScene::init
() {
48
{
49
ScopeLock<GroupID>
lock(
GroupID::Race
);
50
System::RaceConfig::Instance
()->
init
();
51
}
52
}
53
54
#ifdef BUILD_DEBUG
55
void
RootScene::checkMemory() {
56
EGG::ExpHeap
*
heap
=
EGG::Heap::dynamicCastToExp
(
m_heap
);
57
ASSERT
(
heap
);
58
59
heap
->calcGroupSize(&
m_groupSizeRecord
);
60
size_t
defaultSize =
m_groupSizeRecord
.
getGroupSize
(
static_cast<
u16
>
(
GroupID::None
));
61
62
// The scene is the first, always group ID 0 allocation to happen in the scene's heap
63
ASSERT
(defaultSize >=
sizeof
(
RootScene
));
64
defaultSize -=
sizeof
(
RootScene
);
65
if
(defaultSize > 0) {
66
WARN
(
"Default memory usage found! %zu bytes"
, defaultSize);
67
}
68
69
for
(
u16
groupID = 1; groupID <
m_groupSizeRecord
.
size
(); ++groupID) {
70
size_t
size =
m_groupSizeRecord
.
getGroupSize
(groupID);
71
if
(size == 0) {
72
continue
;
73
}
74
75
DEBUG
(
"Group ID %d: Allocated %zu bytes"
, groupID, size);
76
}
77
}
78
#endif
// BUILD_DEBUG
79
80
}
// namespace Kinoko::Scene
KPadDirector.hh
DEBUG
#define DEBUG(m,...)
Definition
Logger.hh:49
ASSERT
#define ASSERT(e)
Definition
Logger.hh:25
WARN
#define WARN(m,...)
Definition
Logger.hh:33
RaceConfig.hh
ResourceManager.hh
RootScene.hh
SceneId.hh
SceneManager.hh
ScopeLock.hh
Kinoko::EGG::ExpHeap::GroupSizeRecord::size
constexpr size_t size() const
Definition
egg/core/ExpHeap.hh:28
Kinoko::EGG::ExpHeap::GroupSizeRecord::getGroupSize
size_t getGroupSize(u16 groupID) const
Definition
egg/core/ExpHeap.cc:139
Kinoko::EGG::ExpHeap
High-level implementation of a memory heap for managing dynamic memory allocation....
Definition
egg/core/ExpHeap.hh:15
Kinoko::EGG::Heap::dynamicCastToExp
static ExpHeap * dynamicCastToExp(Heap *heap)
Definition
Heap.hh:107
Kinoko::EGG::Heap::setName
void setName(const char *name)
Definition
Heap.hh:92
Kinoko::EGG::SceneManager::createChildScene
void createChildScene(int nextSceneId, Scene *parent)
Definition
SceneManager.cc:43
Kinoko::EGG::Scene::m_sceneMgr
SceneManager * m_sceneMgr
Definition
Scene.hh:85
Kinoko::EGG::Scene::m_heap
Heap * m_heap
Definition
Scene.hh:81
Kinoko::EGG::Scene::heap
Heap * heap() const
Definition
Scene.hh:55
Kinoko::Scene::RootScene
The parent scene for all other scenes.
Definition
RootScene.hh:9
Kinoko::Scene::RootScene::init
void init()
Definition
RootScene.cc:47
Kinoko::Scene::RootScene::m_groupSizeRecord
EGG::ExpHeap::GroupSizeRecord m_groupSizeRecord
Definition
RootScene.hh:24
Kinoko::Scene::RootScene::enter
void enter() override
Definition
RootScene.cc:23
Kinoko::Scene::RootScene::~RootScene
~RootScene() override
Kinoko::Scene::RootScene::allocate
void allocate()
Definition
RootScene.cc:33
Kinoko::Scene::RootScene::RootScene
RootScene()
Definition
RootScene.cc:15
Kinoko::ScopeLock
Definition
ScopeLock.hh:10
Kinoko::System::KPadDirector::CreateInstance
static KPadDirector * CreateInstance()
Definition
KPadDirector.cc:42
Kinoko::System::RaceConfig::init
void init()
Definition
RaceConfig.cc:10
Kinoko::System::RaceConfig::Instance
static RaceConfig * Instance()
Definition
RaceConfig.hh:82
Kinoko::System::RaceConfig::CreateInstance
static RaceConfig * CreateInstance()
Definition
RaceConfig.cc:60
Kinoko::System::ResourceManager::CreateInstance
static ResourceManager * CreateInstance()
Definition
ResourceManager.cc:60
Kinoko::Host::SceneId::Race
@ Race
Definition
SceneId.hh:7
Kinoko::Scene
Pertains to scene handling.
Definition
GameScene.cc:10
Kinoko::GroupID::Race
@ Race
Definition
Common.hh:167
Kinoko::GroupID::None
@ None
Definition
Common.hh:166
Kinoko::GroupID::Resource
@ Resource
Definition
Common.hh:175
Kinoko::u16
uint16_t u16
Definition
Memory.hh:17
game
scene
RootScene.cc
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.18.0