3#include <egg/core/SceneManager.hh>
5#include <game/field/CollisionDirector.hh>
6#include <game/field/ObjectDirector.hh>
7#include <game/field/ObjectDrivableDirector.hh>
8#include <game/field/RailManager.hh>
9#include <game/field/jugem/JugemDirector.hh>
10#include <game/field/obj/ObjectBasabasa.hh>
11#include <game/field/obj/ObjectFlamePoleFoot.hh>
13#include <game/item/ItemDirector.hh>
15#include <game/kart/KartObjectManager.hh>
16#include <game/kart/KartParamFileManager.hh>
18#include <game/render/KartCamera.hh>
20#include <game/system/CourseMap.hh>
21#include <game/system/KPadDirector.hh>
22#include <game/system/RaceConfig.hh>
23#include <game/system/RaceManager.hh>
28 m_contextMemory = malloc(MEMORY_SPACE_SIZE);
29 ASSERT(m_contextMemory && EGG::SceneManager::s_rootHeap);
30 memcpy(m_contextMemory,
static_cast<void *
>(EGG::SceneManager::s_rootHeap), MEMORY_SPACE_SIZE);
32 m_statics.m_rootList = Abstract::Memory::MEMiHeapHead::s_rootList;
34 m_statics.m_heapList = EGG::Heap::s_heapList;
35 m_statics.m_currentHeap = EGG::Heap::s_currentHeap;
36 m_statics.m_allocatableHeap = EGG::Heap::s_allocatableHeap;
37 m_statics.m_heapForCreateScene = EGG::SceneManager::s_heapForCreateScene;
38 m_statics.m_boxColMgr = Field::BoxColManager::s_instance;
39 m_statics.m_colDir = Field::CollisionDirector::s_instance;
40 m_statics.m_courseColMgr = Field::CourseColMgr::s_instance;
41 m_statics.m_jugemDir = Field::JugemDirector::s_instance;
42 m_statics.m_objDir = Field::ObjectDirector::s_instance;
43 m_statics.m_objDrivableDir = Field::ObjectDrivableDirector::s_instance;
44 m_statics.m_railMgr = Field::RailManager::s_instance;
45 m_statics.m_itemDir = Item::ItemDirector::s_instance;
46 m_statics.m_kartObjMgr = Kart::KartObjectManager::s_instance;
47 m_statics.m_paramFileMgr = Kart::KartParamFileManager::s_instance;
48 m_statics.m_courseMap = System::CourseMap::s_instance;
49 m_statics.m_padDir = System::KPadDirector::s_instance;
50 m_statics.m_raceConfig = System::RaceConfig::s_instance;
53 m_statics.m_raceMgr = System::RaceManager::s_instance;
54 m_statics.m_resMgr = System::ResourceManager::s_instance;
55 m_statics.m_kartCamera = Render::KartCamera::s_instance;
56 m_statics.m_thunderScaleUpAnmChr = Kart::KartObjectManager::s_thunderScaleUpAnmChr;
57 m_statics.m_thunderScaleDownAnmChr = Kart::KartObjectManager::s_thunderScaleDownAnmChr;
58 m_statics.m_pressScaleUpAnmChr = Kart::KartObjectManager::s_pressScaleUpAnmChr;
59 m_statics.m_frameCtrlBaseUpdateRate = Abstract::g3d::FrameCtrl::s_baseUpdateRate;
60 m_statics.m_dotProductCache = Field::ObjectCollisionBase::s_dotProductCache;
61 m_statics.m_wanwanMaxPitch = Field::ObjectDirector::s_wanwanMaxPitch;
62 m_statics.m_basabasaInitialXRange = Field::ObjectBasabasa::s_initialXRange;
63 m_statics.m_basabasaInitialYRange = Field::ObjectBasabasa::s_initialYRange;
64 m_statics.m_flamePoleCount = Field::ObjectFlamePoleFoot::s_flamePoleCount;
67Context::Context(
const Context &c) {
68 m_contextMemory = malloc(MEMORY_SPACE_SIZE);
69 ASSERT(m_contextMemory && c.m_contextMemory);
70 memcpy(m_contextMemory, c.m_contextMemory, MEMORY_SPACE_SIZE);
71 m_statics = c.m_statics;
76 m_contextMemory = c.m_contextMemory;
77 c.m_contextMemory =
nullptr;
78 m_statics = c.m_statics;
83 free(m_contextMemory);
86Context &Context::operator=(
const Context &rhs) {
91 ASSERT(m_contextMemory && rhs.m_contextMemory && m_contextMemory != rhs.m_contextMemory);
92 memcpy(m_contextMemory, rhs.m_contextMemory, MEMORY_SPACE_SIZE);
93 m_statics = rhs.m_statics;
98Context &Context::operator=(Context &&rhs) {
99 free(m_contextMemory);
100 m_contextMemory = rhs.m_contextMemory;
101 rhs.m_contextMemory =
nullptr;
102 m_statics = rhs.m_statics;
108bool Context::operator==(
const Context &rhs)
const {
109 bool ret = m_contextMemory == rhs.m_contextMemory;
110 ret = ret && m_statics.m_rootList == rhs.m_statics.m_rootList;
111 ret = ret && m_statics.m_archiveList == rhs.m_statics.m_archiveList;
112 ret = ret && m_statics.m_heapList == rhs.m_statics.m_heapList;
113 ret = ret && m_statics.m_currentHeap == rhs.m_statics.m_currentHeap;
114 ret = ret && m_statics.m_allocatableHeap == rhs.m_statics.m_allocatableHeap;
115 ret = ret && m_statics.m_heapForCreateScene == rhs.m_statics.m_heapForCreateScene;
116 ret = ret && m_statics.m_heapOptionFlg == rhs.m_statics.m_heapOptionFlg;
117 ret = ret && m_statics.m_rootHeap == rhs.m_statics.m_rootHeap;
118 ret = ret && m_statics.m_boxColMgr == rhs.m_statics.m_boxColMgr;
119 ret = ret && m_statics.m_colDir == rhs.m_statics.m_colDir;
120 ret = ret && m_statics.m_courseColMgr == rhs.m_statics.m_courseColMgr;
121 ret = ret && m_statics.m_jugemDir == rhs.m_statics.m_jugemDir;
122 ret = ret && m_statics.m_objDir == rhs.m_statics.m_objDir;
123 ret = ret && m_statics.m_objDrivableDir == rhs.m_statics.m_objDrivableDir;
124 ret = ret && m_statics.m_railMgr == rhs.m_statics.m_railMgr;
125 ret = ret && m_statics.m_itemDir == rhs.m_statics.m_itemDir;
126 ret = ret && m_statics.m_kartObjMgr == rhs.m_statics.m_kartObjMgr;
127 ret = ret && m_statics.m_paramFileMgr == rhs.m_statics.m_paramFileMgr;
128 ret = ret && m_statics.m_courseMap == rhs.m_statics.m_courseMap;
129 ret = ret && m_statics.m_padDir == rhs.m_statics.m_padDir;
130 ret = ret && m_statics.m_raceConfig == rhs.m_statics.m_raceConfig;
131 ret = ret && m_statics.m_onInitCallbackArg == rhs.m_statics.m_onInitCallbackArg;
132 ret = ret && m_statics.m_raceMgr == rhs.m_statics.m_raceMgr;
133 ret = ret && m_statics.m_resMgr == rhs.m_statics.m_resMgr;
134 ret = ret && m_statics.m_kartCamera == rhs.m_statics.m_kartCamera;
135 ret = ret && m_statics.m_thunderScaleUpAnmChr == rhs.m_statics.m_thunderScaleUpAnmChr;
136 ret = ret && m_statics.m_thunderScaleDownAnmChr == rhs.m_statics.m_thunderScaleDownAnmChr;
137 ret = ret && m_statics.m_pressScaleUpAnmChr == rhs.m_statics.m_pressScaleUpAnmChr;
138 ret = ret && m_statics.m_frameCtrlBaseUpdateRate == rhs.m_statics.m_frameCtrlBaseUpdateRate;
139 ret = ret && m_statics.m_dotProductCache == rhs.m_statics.m_dotProductCache;
140 ret = ret && m_statics.m_wanwanMaxPitch == rhs.m_statics.m_wanwanMaxPitch;
141 ret = ret && m_statics.m_basabasaInitialXRange == rhs.m_statics.m_basabasaInitialXRange;
142 ret = ret && m_statics.m_basabasaInitialYRange == rhs.m_statics.m_basabasaInitialYRange;
143 ret = ret && m_statics.m_flamePoleCount == rhs.m_statics.m_flamePoleCount;
148void Context::SetActiveContext(
const Context &rhs) {
149 ASSERT(EGG::SceneManager::s_rootHeap && rhs.m_contextMemory);
150 memcpy(
reinterpret_cast<void *
>(EGG::SceneManager::s_rootHeap), rhs.m_contextMemory,
153 Abstract::Memory::MEMiHeapHead::s_rootList = rhs.m_statics.m_rootList;
155 EGG::Heap::s_heapList = rhs.m_statics.m_heapList;
156 EGG::Heap::s_currentHeap = rhs.m_statics.m_currentHeap;
157 EGG::Heap::s_allocatableHeap = rhs.m_statics.m_allocatableHeap;
158 EGG::SceneManager::s_heapForCreateScene = rhs.m_statics.m_heapForCreateScene;
159 EGG::SceneManager::s_heapOptionFlg = rhs.m_statics.m_heapOptionFlg;
160 EGG::SceneManager::s_rootHeap = rhs.m_statics.m_rootHeap;
161 Field::BoxColManager::s_instance = rhs.m_statics.m_boxColMgr;
162 Field::CollisionDirector::s_instance = rhs.m_statics.m_colDir;
163 Field::CourseColMgr::s_instance = rhs.m_statics.m_courseColMgr;
164 Field::JugemDirector::s_instance = rhs.m_statics.m_jugemDir;
165 Field::ObjectDirector::s_instance = rhs.m_statics.m_objDir;
166 Field::ObjectDrivableDirector::s_instance = rhs.m_statics.m_objDrivableDir;
167 Field::RailManager::s_instance = rhs.m_statics.m_railMgr;
168 Item::ItemDirector::s_instance = rhs.m_statics.m_itemDir;
169 Kart::KartObjectManager::s_instance = rhs.m_statics.m_kartObjMgr;
170 Kart::KartParamFileManager::s_instance = rhs.m_statics.m_paramFileMgr;
171 System::CourseMap::s_instance = rhs.m_statics.m_courseMap;
172 System::KPadDirector::s_instance = rhs.m_statics.m_padDir;
173 System::RaceConfig::s_instance = rhs.m_statics.m_raceConfig;
176 System::RaceManager::s_instance = rhs.m_statics.m_raceMgr;
177 System::ResourceManager::s_instance = rhs.m_statics.m_resMgr;
178 Render::KartCamera::s_instance = rhs.m_statics.m_kartCamera;
179 Kart::KartObjectManager::s_thunderScaleUpAnmChr = rhs.m_statics.m_thunderScaleUpAnmChr;
180 Kart::KartObjectManager::s_thunderScaleDownAnmChr = rhs.m_statics.m_thunderScaleDownAnmChr;
181 Kart::KartObjectManager::s_pressScaleUpAnmChr = rhs.m_statics.m_pressScaleUpAnmChr;
182 Abstract::g3d::FrameCtrl::s_baseUpdateRate = rhs.m_statics.m_frameCtrlBaseUpdateRate;
183 Field::ObjectCollisionBase::s_dotProductCache = rhs.m_statics.m_dotProductCache;
184 Field::ObjectDirector::s_wanwanMaxPitch = rhs.m_statics.m_wanwanMaxPitch;
185 Field::ObjectBasabasa::s_initialXRange = rhs.m_statics.m_basabasaInitialXRange;
186 Field::ObjectBasabasa::s_initialYRange = rhs.m_statics.m_basabasaInitialYRange;
187 Field::ObjectFlamePoleFoot::s_flamePoleCount = rhs.m_statics.m_flamePoleCount;
static Abstract::Memory::MEMList s_archiveList
The linked list of all mounted archives.
Contexts can be used to restore a previous memory state for the current session.
static void * s_onInitCallbackArg
The argument sent into the callback. This is expected to be reinterpret_casted.
static InitCallback s_onInitCallback
Host-agnostic way of initializing RaceConfig. The type of the first player must be set to either Loca...
Represents the host application.