Refactor gWorldInstance to GetWorld()
This commit is contained in:
parent
a805d82056
commit
78861112be
|
|
@ -11,12 +11,12 @@ void RunGarbageCollector() {
|
|||
}
|
||||
|
||||
void CleanActors() {
|
||||
for (auto actor = gWorldInstance.Actors.begin(); actor != gWorldInstance.Actors.end();) {
|
||||
for (auto actor = GetWorld()->Actors.begin(); actor != GetWorld()->Actors.end();) {
|
||||
AActor* act = *actor; // Get a mutable copy
|
||||
if (act->bPendingDestroy) {
|
||||
if (act->IsMod()) { // C++ actor
|
||||
delete act;
|
||||
actor = gWorldInstance.Actors.erase(actor); // Remove from container
|
||||
actor = GetWorld()->Actors.erase(actor); // Remove from container
|
||||
} else { // Old C actor
|
||||
act->Flags = 0;
|
||||
act->Type = 0;
|
||||
|
|
@ -32,11 +32,11 @@ void CleanActors() {
|
|||
}
|
||||
|
||||
void CleanStaticMeshActors() {
|
||||
for (auto actor = gWorldInstance.StaticMeshActors.begin(); actor != gWorldInstance.StaticMeshActors.end();) {
|
||||
for (auto actor = GetWorld()->StaticMeshActors.begin(); actor != GetWorld()->StaticMeshActors.end();) {
|
||||
StaticMeshActor* act = *actor; // Get a mutable copy
|
||||
if (act->bPendingDestroy) {
|
||||
delete act;
|
||||
actor = gWorldInstance.StaticMeshActors.erase(actor); // Remove from container
|
||||
actor = GetWorld()->StaticMeshActors.erase(actor); // Remove from container
|
||||
continue;
|
||||
} else {
|
||||
actor++;
|
||||
|
|
@ -45,11 +45,11 @@ void CleanStaticMeshActors() {
|
|||
}
|
||||
|
||||
void CleanObjects() {
|
||||
for (auto object = gWorldInstance.Objects.begin(); object != gWorldInstance.Objects.end();) {
|
||||
for (auto object = GetWorld()->Objects.begin(); object != GetWorld()->Objects.end();) {
|
||||
OObject* obj = *object; // Get a mutable copy
|
||||
if (obj->bPendingDestroy) {
|
||||
delete obj;
|
||||
object = gWorldInstance.Objects.erase(object); // Remove from container
|
||||
object = GetWorld()->Objects.erase(object); // Remove from container
|
||||
continue;
|
||||
}
|
||||
object++;
|
||||
|
|
|
|||
|
|
@ -59,14 +59,14 @@ void SetTextMatrix(Mat4 mf, f32 x, f32 y, f32 arg3, f32 arg4) {
|
|||
// AddMatrix but with custom gfx ptr arg and flags are predefined
|
||||
Gfx* AddTextMatrix(Gfx* displayListHead, Mat4 mtx) {
|
||||
// Push a new matrix to the stack
|
||||
gWorldInstance.Mtx.Objects.emplace_back();
|
||||
GetWorld()->Mtx.Objects.emplace_back();
|
||||
|
||||
// Convert to a fixed-point matrix
|
||||
FrameInterpolation_RecordMatrixMtxFToMtx((MtxF*)mtx, &gWorldInstance.Mtx.Objects.back());
|
||||
guMtxF2L(mtx, &gWorldInstance.Mtx.Objects.back());
|
||||
FrameInterpolation_RecordMatrixMtxFToMtx((MtxF*)mtx, &GetWorld()->Mtx.Objects.back());
|
||||
guMtxF2L(mtx, &GetWorld()->Mtx.Objects.back());
|
||||
|
||||
// Load the matrix
|
||||
gSPMatrix(displayListHead++, &gWorldInstance.Mtx.Objects.back(), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPMatrix(displayListHead++, &GetWorld()->Mtx.Objects.back(), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
return displayListHead;
|
||||
}
|
||||
|
|
@ -195,43 +195,43 @@ void AddLocalRotation(Mat4 mat, IRotator rot) {
|
|||
extern "C" {
|
||||
|
||||
void AddHudMatrix(Mat4 mtx, s32 flags) {
|
||||
AddMatrix(gWorldInstance.Mtx.Objects, mtx, flags);
|
||||
AddMatrix(GetWorld()->Mtx.Objects, mtx, flags);
|
||||
}
|
||||
|
||||
Mtx* GetScreenMatrix(void) {
|
||||
return &gWorldInstance.Mtx.Screen2D;
|
||||
return &GetWorld()->Mtx.Screen2D;
|
||||
}
|
||||
|
||||
Mtx* GetOrthoMatrix(void) {
|
||||
return &gWorldInstance.Mtx.Ortho;
|
||||
return &GetWorld()->Mtx.Ortho;
|
||||
}
|
||||
|
||||
Mtx* GetPerspMatrix(size_t cameraId) {
|
||||
return &gWorldInstance.Mtx.Persp[cameraId];
|
||||
return &GetWorld()->Mtx.Persp[cameraId];
|
||||
}
|
||||
|
||||
Mtx* GetLookAtMatrix(size_t cameraId) {
|
||||
return &gWorldInstance.Mtx.LookAt[cameraId];
|
||||
return &GetWorld()->Mtx.LookAt[cameraId];
|
||||
}
|
||||
|
||||
void AddObjectMatrix(Mat4 mtx, s32 flags) {
|
||||
AddMatrix(gWorldInstance.Mtx.Objects, mtx, flags);
|
||||
AddMatrix(GetWorld()->Mtx.Objects, mtx, flags);
|
||||
}
|
||||
|
||||
Mtx* GetShadowMatrix(size_t playerId) {
|
||||
return &gWorldInstance.Mtx.Shadows[playerId];
|
||||
return &GetWorld()->Mtx.Shadows[playerId];
|
||||
}
|
||||
|
||||
Mtx* GetKartMatrix(size_t playerId) {
|
||||
return &gWorldInstance.Mtx.Karts[playerId];
|
||||
return &GetWorld()->Mtx.Karts[playerId];
|
||||
}
|
||||
|
||||
void AddEffectMatrix(Mat4 mtx, s32 flags) {
|
||||
AddMatrix(gWorldInstance.Mtx.Objects, mtx, flags);
|
||||
AddMatrix(GetWorld()->Mtx.Objects, mtx, flags);
|
||||
}
|
||||
|
||||
void AddEffectMatrixOrtho(void) {
|
||||
auto& stack = gWorldInstance.Mtx.Objects;
|
||||
auto& stack = GetWorld()->Mtx.Objects;
|
||||
stack.emplace_back();
|
||||
|
||||
guOrtho(&stack.back(), 0.0f, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 0.0f, -100.0f, 100.0f, 1.0f);
|
||||
|
|
@ -240,7 +240,7 @@ extern "C" {
|
|||
}
|
||||
|
||||
Mtx* GetEffectMatrix(void) {
|
||||
return GetMatrix(gWorldInstance.Mtx.Objects);
|
||||
return GetMatrix(GetWorld()->Mtx.Objects);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -249,14 +249,14 @@ extern "C" {
|
|||
* We might need to adjust which ones we clear.
|
||||
*/
|
||||
void ClearMatrixPools(void) {
|
||||
gWorldInstance.Mtx.Objects.clear();
|
||||
// gWorldInstance.Mtx.Shadows.clear();
|
||||
//gWorldInstance.Mtx.Karts.clear();
|
||||
// gWorldInstance.Mtx.Effects.clear();
|
||||
GetWorld()->Mtx.Objects.clear();
|
||||
// GetWorld()->Mtx.Shadows.clear();
|
||||
//GetWorld()->Mtx.Karts.clear();
|
||||
// GetWorld()->Mtx.Effects.clear();
|
||||
}
|
||||
|
||||
void ClearObjectsMatrixPool(void) {
|
||||
gWorldInstance.Mtx.Objects.clear();
|
||||
GetWorld()->Mtx.Objects.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ void RaceManager::BeginPlay() {
|
|||
void RaceManager::PostInit() {
|
||||
// Ruleset options
|
||||
if (CVarGetInteger("gAllThwompsAreMarty", false) == true) {
|
||||
for (auto object : gWorldInstance.Objects) {
|
||||
for (auto object : GetWorld()->Objects) {
|
||||
if (OThwomp* thwomp = dynamic_cast<OThwomp*>(object)) {
|
||||
gObjectList[thwomp->_objectIndex].unk_0D5 = OThwomp::States::JAILED; // Sets all the thwomp behaviour flags to marty
|
||||
thwomp->Behaviour = OThwomp::States::JAILED;
|
||||
|
|
@ -100,7 +100,7 @@ void RaceManager::PostInit() {
|
|||
}
|
||||
|
||||
if (CVarGetInteger("gAllBombKartsChase", false) == true) {
|
||||
for (auto object : gWorldInstance.Objects) {
|
||||
for (auto object : GetWorld()->Objects) {
|
||||
if (OBombKart* kart = dynamic_cast<OBombKart*>(object)) {
|
||||
kart->Behaviour = OBombKart::States::CHASE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,147 +42,147 @@ void RegisterActors(Registry<ActorInfo, const SpawnParams&>& r) {
|
|||
info = { .ResourceName = "mk:thwomp" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OThwomp(params));
|
||||
GetWorld()->AddObject(new OThwomp(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:snowman" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OSnowman(params));
|
||||
GetWorld()->AddObject(new OSnowman(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:hot_air_balloon" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OHotAirBalloon(params));
|
||||
GetWorld()->AddObject(new OHotAirBalloon(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:hedgehog" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OHedgehog(params));
|
||||
GetWorld()->AddObject(new OHedgehog(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:grand_prix_balloons" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OGrandPrixBalloons(params));
|
||||
GetWorld()->AddObject(new OGrandPrixBalloons(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:flagpole" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OFlagpole(params));
|
||||
GetWorld()->AddObject(new OFlagpole(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:crab" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OCrab(params));
|
||||
GetWorld()->AddObject(new OCrab(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:cheep_cheep" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OCheepCheep(params));
|
||||
GetWorld()->AddObject(new OCheepCheep(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:bomb_kart" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OBombKart(params));
|
||||
GetWorld()->AddObject(new OBombKart(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:bat" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OBat(params));
|
||||
GetWorld()->AddObject(new OBat(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:boos" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OBoos(params));
|
||||
GetWorld()->AddObject(new OBoos(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:trophy" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OTrophy(params));
|
||||
GetWorld()->AddObject(new OTrophy(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:trash_bin" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OTrashBin(params));
|
||||
GetWorld()->AddObject(new OTrashBin(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:seagull" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OSeagull(params));
|
||||
GetWorld()->AddObject(new OSeagull(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:chain_chomp" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OChainChomp());
|
||||
GetWorld()->AddObject(new OChainChomp());
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:podium" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OPodium(params));
|
||||
GetWorld()->AddObject(new OPodium(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:penguin" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddObject(new OPenguin(params));
|
||||
GetWorld()->AddObject(new OPenguin(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:banana" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ABanana(params));
|
||||
GetWorld()->AddActor(new ABanana(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:mario_sign" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AMarioSign(params));
|
||||
GetWorld()->AddActor(new AMarioSign(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:wario_sign" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AWarioSign(params));
|
||||
GetWorld()->AddActor(new AWarioSign(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:falling_rock" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AFallingRock(params));
|
||||
GetWorld()->AddActor(new AFallingRock(params));
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -354,77 +354,77 @@ void RegisterActors(Registry<ActorInfo, const SpawnParams&>& r) {
|
|||
info = { .ResourceName = "mk:train" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ATrain(params));
|
||||
GetWorld()->AddActor(new ATrain(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:paddle_boat" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ABoat(params));
|
||||
GetWorld()->AddActor(new ABoat(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:car" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ACar(params));
|
||||
GetWorld()->AddActor(new ACar(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:truck" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ATankerTruck(params));
|
||||
GetWorld()->AddActor(new ATankerTruck(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:tanker_truck" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ATankerTruck(params));
|
||||
GetWorld()->AddActor(new ATankerTruck(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "mk:bus" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ATankerTruck(params));
|
||||
GetWorld()->AddActor(new ATankerTruck(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "hm:spaghetti_ship" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ASpaghettiShip(params));
|
||||
GetWorld()->AddActor(new ASpaghettiShip(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "hm:ship" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AShip(params));
|
||||
GetWorld()->AddActor(new AShip(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "hm:starship" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AStarship(params));
|
||||
GetWorld()->AddActor(new AStarship(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "hm:cloud" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new ACloud(params));
|
||||
GetWorld()->AddActor(new ACloud(params));
|
||||
}
|
||||
);
|
||||
|
||||
info = { .ResourceName = "hm:text" };
|
||||
r.Add(info,
|
||||
[](const SpawnParams& params) {
|
||||
gWorldInstance.AddActor(new AText(params));
|
||||
GetWorld()->AddActor(new AText(params));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -441,7 +441,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<MarioRaceway>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<MarioRaceway>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -454,7 +454,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<ChocoMountain>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<ChocoMountain>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -467,7 +467,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<BowsersCastle>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<BowsersCastle>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -480,7 +480,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<BansheeBoardwalk>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<BansheeBoardwalk>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -493,7 +493,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<YoshiValley>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<YoshiValley>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -506,7 +506,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<FrappeSnowland>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<FrappeSnowland>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -519,7 +519,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<KoopaTroopaBeach>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<KoopaTroopaBeach>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -532,7 +532,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<RoyalRaceway>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<RoyalRaceway>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -545,7 +545,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<LuigiRaceway>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<LuigiRaceway>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -558,7 +558,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<MooMooFarm>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<MooMooFarm>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -571,7 +571,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<ToadsTurnpike>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<ToadsTurnpike>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -584,7 +584,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<KalimariDesert>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<KalimariDesert>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -597,7 +597,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<SherbetLand>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<SherbetLand>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -610,7 +610,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<RainbowRoad>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<RainbowRoad>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -623,7 +623,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<WarioStadium>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<WarioStadium>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -636,7 +636,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<BlockFort>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<BlockFort>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -649,7 +649,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<Skyscraper>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<Skyscraper>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -662,7 +662,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<DoubleDeck>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<DoubleDeck>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -675,7 +675,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<DKJungle>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<DKJungle>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -688,7 +688,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<BigDonut>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<BigDonut>());
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -701,7 +701,7 @@ void RegisterTracks(Registry<TrackInfo>& r) {
|
|||
|
||||
r.Add(info,
|
||||
[]() {
|
||||
gWorldInstance.SetCurrentTrack(std::make_shared<TestTrack>());
|
||||
GetWorld()->SetCurrentTrack(std::make_shared<TestTrack>());
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ struct ActorInfo {
|
|||
* params.Location = FVector(0, 0, 0);
|
||||
*
|
||||
* gActorRegistry.Add(actorInfo, [](params) {
|
||||
* gWorldInstance.AddActor(new ACloud(params));
|
||||
* GetWorld()->AddActor(new ACloud(params));
|
||||
* });
|
||||
*
|
||||
* gActorRegistry.Invoke("hm:cloud", params);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ void Rulesets::PreInit() {
|
|||
// Only runs a single time at the beginning of a track.
|
||||
void Rulesets::PostInit() {
|
||||
if (CVarGetInteger("gAllThwompsAreMarty", false) == true) {
|
||||
for (auto object : gWorldInstance.Objects) {
|
||||
for (auto object : GetWorld()->Objects) {
|
||||
if (OThwomp* thwomp = dynamic_cast<OThwomp*>(object)) {
|
||||
gObjectList[thwomp->_objectIndex].unk_0D5 = OThwomp::States::JAILED; // Sets all the thwomp behaviour flags to marty
|
||||
thwomp->Behaviour = OThwomp::States::JAILED;
|
||||
|
|
@ -37,7 +37,7 @@ void Rulesets::PostInit() {
|
|||
}
|
||||
|
||||
if (CVarGetInteger("gAllBombKartsChase", false) == true) {
|
||||
for (auto object : gWorldInstance.Objects) {
|
||||
for (auto object : GetWorld()->Objects) {
|
||||
if (OBombKart* kart = dynamic_cast<OBombKart*>(object)) {
|
||||
kart->Behaviour = OBombKart::States::CHASE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ void TrainSmokeTick() {
|
|||
s32 temp_a0;
|
||||
Object* object;
|
||||
|
||||
for (auto& actor : gWorldInstance.Actors) {
|
||||
for (auto& actor : GetWorld()->Actors) {
|
||||
if (auto train = dynamic_cast<ATrain*>(actor)) {
|
||||
if (train->SmokeTimer != 0) {
|
||||
train->SmokeTimer -= 1;
|
||||
|
|
@ -79,7 +79,7 @@ void TrainSmokeTick() {
|
|||
void TrainSmokeDraw(s32 cameraId) {
|
||||
Camera* camera = &camera1[cameraId];
|
||||
|
||||
for (auto& actor : gWorldInstance.Actors) {
|
||||
for (auto& actor : GetWorld()->Actors) {
|
||||
if (auto train = dynamic_cast<ATrain*>(actor)) {
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007AE0);
|
||||
load_texture_block_i8_nomirror((uint8_t*) D_0D029458, 32, 32);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ extern "C" void TrackBrowser_SetTrack(const char* name) {
|
|||
}
|
||||
|
||||
extern "C" void TrackBrowser_SetTrackFromCup() {
|
||||
TrackBrowser::Instance->SetTrack(gWorldInstance.GetCurrentCup()->GetTrack());
|
||||
TrackBrowser::Instance->SetTrack(GetWorld()->GetCurrentCup()->GetTrack());
|
||||
}
|
||||
|
||||
extern "C" void TrackBrowser_NextTrack(void) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ void TrainCrossing::CrossingTrigger() {
|
|||
s32 i;
|
||||
OnTriggered = 0;
|
||||
|
||||
for (const auto& actor : gWorldInstance.Actors) {
|
||||
for (const auto& actor : GetWorld()->Actors) {
|
||||
if (auto train = dynamic_cast<ATrain*>(actor)) {
|
||||
;
|
||||
f32 radius = DynamicRadius(train->Locomotive.position, train->Locomotive.velocity, Position);
|
||||
|
|
|
|||
|
|
@ -132,5 +132,3 @@ public:
|
|||
private:
|
||||
std::unique_ptr<RaceManager> RaceManagerInstance;
|
||||
};
|
||||
|
||||
extern World gWorldInstance;
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ void ACloud::Draw(Camera* camera) {
|
|||
|
||||
void ACloud::Collision(Player* player, AActor* actor) {
|
||||
if (!PickedUp) {
|
||||
if (query_collision_player_vs_actor_item(player, gWorldInstance.ConvertAActorToActor(actor))) {
|
||||
if (query_collision_player_vs_actor_item(player, GetWorld()->ConvertAActorToActor(actor))) {
|
||||
// Player has picked up the actor, activate the cloud effect
|
||||
_player = player;
|
||||
PickedUp = true;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public:
|
|||
.Speed = hop, // How high you hop
|
||||
.SpeedB = gravity, // How much gravity is effected
|
||||
};
|
||||
return static_cast<ACloud*>(gWorldInstance.AddActor(new ACloud(params)));
|
||||
return static_cast<ACloud*>(GetWorld()->AddActor(new ACloud(params)));
|
||||
}
|
||||
|
||||
virtual void Tick() override;
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@
|
|||
#include "engine/CoreMath.h"
|
||||
#include "engine/World.h"
|
||||
|
||||
class World;
|
||||
extern World gWorldInstance;
|
||||
|
||||
extern "C" {
|
||||
#include "common_structs.h"
|
||||
}
|
||||
|
|
@ -32,7 +29,7 @@ public:
|
|||
.Behaviour = respawnTimer,
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<AFallingRock*>(gWorldInstance.AddActor(new AFallingRock(params)));
|
||||
return static_cast<AFallingRock*>(GetWorld()->AddActor(new AFallingRock(params)));
|
||||
}
|
||||
|
||||
int16_t TimerLength = 80;
|
||||
|
|
|
|||
|
|
@ -31,14 +31,14 @@ public:
|
|||
.Location = pos,
|
||||
.Rotation = rot,
|
||||
};
|
||||
return static_cast<AFinishline*>(gWorldInstance.AddActor(new AFinishline(params)));
|
||||
return static_cast<AFinishline*>(GetWorld()->AddActor(new AFinishline(params)));
|
||||
}
|
||||
|
||||
static inline AFinishline* Spawn() {
|
||||
SpawnParams params = {
|
||||
.Name = "mk:finishline",
|
||||
};
|
||||
return static_cast<AFinishline*>(gWorldInstance.AddActor(new AFinishline(params)));
|
||||
return static_cast<AFinishline*>(GetWorld()->AddActor(new AFinishline(params)));
|
||||
}
|
||||
|
||||
// Virtual functions to be overridden by derived classes
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
#include "CoreMath.h"
|
||||
#include "engine/World.h"
|
||||
|
||||
class World;
|
||||
extern World gWorldInstance;
|
||||
|
||||
extern "C" {
|
||||
#include "common_structs.h"
|
||||
}
|
||||
|
|
@ -28,7 +25,7 @@ public:
|
|||
.Velocity = velocity,
|
||||
.Speed = 182,
|
||||
};
|
||||
return static_cast<AMarioSign*>(gWorldInstance.AddActor(new AMarioSign(params)));
|
||||
return static_cast<AMarioSign*>(GetWorld()->AddActor(new AMarioSign(params)));
|
||||
}
|
||||
|
||||
virtual bool IsMod() override;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
.Rotation = rot,
|
||||
.Scale = scale,
|
||||
};
|
||||
return static_cast<AShip*>(gWorldInstance.AddActor(new AShip(params)));
|
||||
return static_cast<AShip*>(GetWorld()->AddActor(new AShip(params)));
|
||||
}
|
||||
|
||||
AShip::Skin SpawnSkin = Skin::GHOSTSHIP;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public:
|
|||
.Rotation = rot,
|
||||
.Scale = scale,
|
||||
};
|
||||
return static_cast<ASpaghettiShip*>(gWorldInstance.AddActor(new ASpaghettiShip(params)));
|
||||
return static_cast<ASpaghettiShip*>(GetWorld()->AddActor(new ASpaghettiShip(params)));
|
||||
}
|
||||
|
||||
virtual void Tick() override;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public:
|
|||
.Speed = speed,
|
||||
.SpeedB = radius,
|
||||
};
|
||||
return static_cast<AStarship*>(gWorldInstance.AddActor(new AStarship(params)));
|
||||
return static_cast<AStarship*>(GetWorld()->AddActor(new AStarship(params)));
|
||||
}
|
||||
|
||||
float SpeedB;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public:
|
|||
.Location = pos,
|
||||
.Scale = scale,
|
||||
};
|
||||
return static_cast<AText*>(gWorldInstance.AddActor(new AText(params)));
|
||||
return static_cast<AText*>(GetWorld()->AddActor(new AText(params)));
|
||||
}
|
||||
|
||||
// Virtual functions to be overridden by derived classes
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public:
|
|||
.Velocity = velocity,
|
||||
.Speed = 182,
|
||||
};
|
||||
return static_cast<AWarioSign*>(gWorldInstance.AddActor(new AWarioSign(params)));
|
||||
return static_cast<AWarioSign*>(GetWorld()->AddActor(new AWarioSign(params)));
|
||||
}
|
||||
|
||||
virtual bool IsMod() override;
|
||||
|
|
|
|||
|
|
@ -45,12 +45,12 @@ void TourCamera::Reset() {
|
|||
void TourCamera::NextShot() {
|
||||
TourCamera::Reset();
|
||||
bShotComplete = false;
|
||||
_camera->pos[0] = gWorldInstance.GetTrack()->TourShots[ShotIndex].Pos.x;
|
||||
_camera->pos[1] = gWorldInstance.GetTrack()->TourShots[ShotIndex].Pos.y;
|
||||
_camera->pos[2] = gWorldInstance.GetTrack()->TourShots[ShotIndex].Pos.z;
|
||||
_camera->lookAt[0] = gWorldInstance.GetTrack()->TourShots[ShotIndex].LookAt.x;
|
||||
_camera->lookAt[1] = gWorldInstance.GetTrack()->TourShots[ShotIndex].LookAt.y;
|
||||
_camera->lookAt[2] = gWorldInstance.GetTrack()->TourShots[ShotIndex].LookAt.z;
|
||||
_camera->pos[0] = GetWorld()->GetTrack()->TourShots[ShotIndex].Pos.x;
|
||||
_camera->pos[1] = GetWorld()->GetTrack()->TourShots[ShotIndex].Pos.y;
|
||||
_camera->pos[2] = GetWorld()->GetTrack()->TourShots[ShotIndex].Pos.z;
|
||||
_camera->lookAt[0] = GetWorld()->GetTrack()->TourShots[ShotIndex].LookAt.x;
|
||||
_camera->lookAt[1] = GetWorld()->GetTrack()->TourShots[ShotIndex].LookAt.y;
|
||||
_camera->lookAt[2] = GetWorld()->GetTrack()->TourShots[ShotIndex].LookAt.z;
|
||||
}
|
||||
|
||||
void TourCamera::Stop() {
|
||||
|
|
@ -76,7 +76,7 @@ void TourCamera::Tick() {
|
|||
if (
|
||||
(nullptr == _camera) ||
|
||||
(bTourComplete) ||
|
||||
(ShotIndex >= gWorldInstance.GetTrack()->TourShots.size())
|
||||
(ShotIndex >= GetWorld()->GetTrack()->TourShots.size())
|
||||
) {
|
||||
Alpha += 5;
|
||||
if (Alpha == 255) {
|
||||
|
|
@ -108,7 +108,7 @@ void TourCamera::Tick() {
|
|||
}
|
||||
}
|
||||
|
||||
bool done = TourCamera::MoveCameraAlongSpline(&extraArg, gWorldInstance.GetTrack()->TourShots[ShotIndex].Frames);
|
||||
bool done = TourCamera::MoveCameraAlongSpline(&extraArg, GetWorld()->GetTrack()->TourShots[ShotIndex].Frames);
|
||||
|
||||
// Advance to the next camera shot
|
||||
if (done) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace Editor {
|
|||
}
|
||||
|
||||
void Editor::GenerateCollision() {
|
||||
// for (auto& actor : gWorldInstance.Actors) {
|
||||
// for (auto& actor : GetWorld()->Actors) {
|
||||
// GenerateCollisionMesh(actor, (Gfx*)actor->Model, 1.0f);
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ std::pair<AActor*, float> ObjectPicker::CheckAActorRay(Ray ray) {
|
|||
AActor* hitActor = nullptr;
|
||||
float hitDistance = FLT_MAX;
|
||||
|
||||
for (auto actor : gWorldInstance.Actors) {
|
||||
for (auto actor : GetWorld()->Actors) {
|
||||
if ((actor->bPendingDestroy) && (!actor->IsMod())) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace Editor {
|
|||
/**
|
||||
* Save track properties, static mesh actors, actors, and tour camera
|
||||
*/
|
||||
data["Props"] = gWorldInstance.GetTrack()->Props.to_json();
|
||||
data["Props"] = GetWorld()->GetTrack()->Props.to_json();
|
||||
|
||||
nlohmann::json staticMesh;
|
||||
SaveStaticMeshActors(staticMesh);
|
||||
|
|
@ -54,7 +54,7 @@ namespace Editor {
|
|||
data["Actors"] = actors;
|
||||
|
||||
|
||||
if (gWorldInstance.GetTrack()->TourShots.size() != 0) {
|
||||
if (GetWorld()->GetTrack()->TourShots.size() != 0) {
|
||||
nlohmann::json tour;
|
||||
SaveTour(tour);
|
||||
data["Tour"] = tour;
|
||||
|
|
@ -84,7 +84,7 @@ namespace Editor {
|
|||
}
|
||||
}
|
||||
|
||||
/** Do not use gWorldInstance.CurrentCourse during loading! The current track is not guaranteed! **/
|
||||
/** Do not use GetWorld()->CurrentCourse during loading! The current track is not guaranteed! **/
|
||||
void LoadLevel(Track* track, std::string sceneFile) {
|
||||
SceneFile = sceneFile;
|
||||
if ((nullptr == track) || (nullptr == track->RootArchive)) {
|
||||
|
|
@ -124,8 +124,8 @@ namespace Editor {
|
|||
}
|
||||
|
||||
void Load_AddStaticMeshActor(const nlohmann::json& actorJson) {
|
||||
gWorldInstance.StaticMeshActors.push_back(new StaticMeshActor("", FVector(0, 0, 0), IRotator(0, 0, 0), FVector(1, 1, 1), "", nullptr));
|
||||
auto actor = gWorldInstance.StaticMeshActors.back();
|
||||
GetWorld()->StaticMeshActors.push_back(new StaticMeshActor("", FVector(0, 0, 0), IRotator(0, 0, 0), FVector(1, 1, 1), "", nullptr));
|
||||
auto actor = GetWorld()->StaticMeshActors.back();
|
||||
actor->from_json(actorJson);
|
||||
|
||||
printf("After from_json: Pos(%f, %f, %f), Name: %s, Model: %s\n",
|
||||
|
|
@ -180,7 +180,7 @@ namespace Editor {
|
|||
}
|
||||
|
||||
void SaveActors(nlohmann::json& actorList) {
|
||||
for (const auto& actor : gWorldInstance.Actors) {
|
||||
for (const auto& actor : GetWorld()->Actors) {
|
||||
SpawnParams params{};
|
||||
bool alreadyProcessed = false;
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ namespace Editor {
|
|||
}
|
||||
}
|
||||
|
||||
for (const auto& object : gWorldInstance.Objects) {
|
||||
for (const auto& object : GetWorld()->Objects) {
|
||||
SpawnParams params;
|
||||
object->SetSpawnParams(params);
|
||||
|
||||
|
|
@ -247,17 +247,17 @@ namespace Editor {
|
|||
}
|
||||
|
||||
void SaveStaticMeshActors(nlohmann::json& actorList) {
|
||||
for (const auto& mesh : gWorldInstance.StaticMeshActors) {
|
||||
for (const auto& mesh : GetWorld()->StaticMeshActors) {
|
||||
actorList.push_back(mesh->to_json());
|
||||
}
|
||||
}
|
||||
|
||||
void SaveTour(nlohmann::json& tour) {
|
||||
tour["Enabled"] = gWorldInstance.GetTrack()->bTourEnabled;
|
||||
tour["Enabled"] = GetWorld()->GetTrack()->bTourEnabled;
|
||||
|
||||
// Camera shots
|
||||
tour["Shots"] = nlohmann::json::array();
|
||||
for (const auto& shot : gWorldInstance.GetTrack()->TourShots) {
|
||||
for (const auto& shot : GetWorld()->GetTrack()->TourShots) {
|
||||
tour["Shots"].push_back(ToJson(shot));
|
||||
}
|
||||
}
|
||||
|
|
@ -299,7 +299,7 @@ namespace Editor {
|
|||
return;
|
||||
}
|
||||
|
||||
gWorldInstance.StaticMeshActors.clear(); // Clear existing actors, if any
|
||||
GetWorld()->StaticMeshActors.clear(); // Clear existing actors, if any
|
||||
|
||||
for (const auto& actorJson : data["StaticMeshActors"]) {
|
||||
Load_AddStaticMeshActor(actorJson);
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public:
|
|||
.Location = pos,
|
||||
.Rotation = rot,
|
||||
};
|
||||
return static_cast<OBat*>(gWorldInstance.AddObject(new OBat(params)));
|
||||
return static_cast<OBat*>(GetWorld()->AddObject(new OBat(params)));
|
||||
}
|
||||
|
||||
explicit OBat(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class OBombKart : public OObject {
|
|||
.Speed = unk_3C, // Only used for podium ceremony. Arbitrarily chose Speed for this
|
||||
.SpeedB = 2.7f, // Chase speed
|
||||
};
|
||||
return static_cast<OBombKart*>(gWorldInstance.AddObject(new OBombKart(params)));
|
||||
return static_cast<OBombKart*>(GetWorld()->AddObject(new OBombKart(params)));
|
||||
}
|
||||
|
||||
// Spawn object at a point along the tracks path
|
||||
|
|
@ -72,7 +72,7 @@ class OBombKart : public OObject {
|
|||
.PathPoint = pathPoint,
|
||||
.Speed = unk_3C, // Only used for podium ceremony. Arbitrarily chose Speed for this
|
||||
};
|
||||
return static_cast<OBombKart*>(gWorldInstance.AddObject(new OBombKart(params)));
|
||||
return static_cast<OBombKart*>(GetWorld()->AddObject(new OBombKart(params)));
|
||||
}
|
||||
|
||||
// Set waypoint to NULL if using a spawn position and not a waypoint.
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public:
|
|||
.TriggerSpan = triggerBoundary,
|
||||
.RightExitSpan = rightBoundary,
|
||||
};
|
||||
return static_cast<OBoos*>(gWorldInstance.AddObject(new OBoos(params)));
|
||||
return static_cast<OBoos*>(GetWorld()->AddObject(new OBoos(params)));
|
||||
}
|
||||
|
||||
explicit OBoos(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
.Location = pos,
|
||||
.PathSpan = span,
|
||||
};
|
||||
return static_cast<OCheepCheep*>(gWorldInstance.AddObject(new OCheepCheep(params)));
|
||||
return static_cast<OCheepCheep*>(GetWorld()->AddObject(new OCheepCheep(params)));
|
||||
}
|
||||
|
||||
explicit OCheepCheep(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public:
|
|||
.PatrolStart = start,
|
||||
.PatrolEnd = end,
|
||||
};
|
||||
return static_cast<OCrab*>(gWorldInstance.AddObject(new OCrab(params)));
|
||||
return static_cast<OCrab*>(GetWorld()->AddObject(new OCrab(params)));
|
||||
}
|
||||
|
||||
explicit OCrab(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
.Location = pos,
|
||||
.Rotation = rot,
|
||||
};
|
||||
return static_cast<OFlagpole*>(gWorldInstance.AddObject(new OFlagpole(params)));
|
||||
return static_cast<OFlagpole*>(GetWorld()->AddObject(new OFlagpole(params)));
|
||||
}
|
||||
|
||||
~OFlagpole() {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public:
|
|||
.Name = "mk:grand_prix_balloons",
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<OGrandPrixBalloons*>(gWorldInstance.AddObject(new OGrandPrixBalloons(params)));
|
||||
return static_cast<OGrandPrixBalloons*>(GetWorld()->AddObject(new OGrandPrixBalloons(params)));
|
||||
}
|
||||
|
||||
~OGrandPrixBalloons() {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
.Location = pos,
|
||||
.PatrolEnd = patrolPoint,
|
||||
};
|
||||
return static_cast<OHedgehog*>(gWorldInstance.AddObject(new OHedgehog(params)));
|
||||
return static_cast<OHedgehog*>(GetWorld()->AddObject(new OHedgehog(params)));
|
||||
}
|
||||
|
||||
~OHedgehog() {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public:
|
|||
.Name = "mk:hot_air_balloon",
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<OHotAirBalloon*>(gWorldInstance.AddObject(new OHotAirBalloon(params)));
|
||||
return static_cast<OHotAirBalloon*>(GetWorld()->AddObject(new OHotAirBalloon(params)));
|
||||
}
|
||||
|
||||
virtual void Tick() override;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ OMoleGroup::OMoleGroup(std::vector<FVector>& spawns, size_t tickRate) {
|
|||
_tickRate = tickRate;
|
||||
for (auto& pos : spawns) {
|
||||
pos.x * xOrientation;
|
||||
OMole* ptr = reinterpret_cast<OMole*>(gWorldInstance.AddObject(new OMole(pos, this)));
|
||||
OMole* ptr = reinterpret_cast<OMole*>(GetWorld()->AddObject(new OMole(pos, this)));
|
||||
_moles.push_back({ptr, pos, false});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
.Rotation = rot,
|
||||
.Speed = diameter, // Diameter of the walking circle
|
||||
};
|
||||
return static_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(params)));
|
||||
return static_cast<OPenguin*>(GetWorld()->AddObject(new OPenguin(params)));
|
||||
}
|
||||
|
||||
PenguinType Type = PenguinType::CHICK;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
.Name = "mk:podium",
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<OPodium*>(gWorldInstance.AddObject(new OPodium(params)));
|
||||
return static_cast<OPodium*>(GetWorld()->AddObject(new OPodium(params)));
|
||||
}
|
||||
|
||||
virtual void Tick() override;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public:
|
|||
.Name = "mk:seagull",
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<OSeagull*>(gWorldInstance.AddObject(new OSeagull(params)));
|
||||
return static_cast<OSeagull*>(GetWorld()->AddObject(new OSeagull(params)));
|
||||
}
|
||||
|
||||
virtual void Tick() override;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public:
|
|||
.Name = "mk:snowman",
|
||||
.Location = FVector(pos.x, pos.y, pos.z),
|
||||
};
|
||||
return static_cast<OSnowman*>(gWorldInstance.AddObject(new OSnowman(params)));
|
||||
return static_cast<OSnowman*>(GetWorld()->AddObject(new OSnowman(params)));
|
||||
}
|
||||
|
||||
explicit OSnowman(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
|
||||
#include "engine/objects/Object.h"
|
||||
|
||||
class World;
|
||||
extern World gWorldInstance;
|
||||
|
||||
extern "C" {
|
||||
#include "macros.h"
|
||||
#include "main.h"
|
||||
|
|
@ -61,7 +58,7 @@ public:
|
|||
.PrimAlpha = primAlpha,
|
||||
.BoundingBoxSize = boundingBoxSize
|
||||
};
|
||||
return static_cast<OThwomp*>(gWorldInstance.AddObject(new OThwomp(params)));
|
||||
return static_cast<OThwomp*>(GetWorld()->AddObject(new OThwomp(params)));
|
||||
}
|
||||
|
||||
explicit OThwomp(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
.Rotation = rot,
|
||||
.Scale = FVector(0, scale, 0),
|
||||
};
|
||||
return static_cast<OTrashBin*>(gWorldInstance.AddObject(new OTrashBin(params)));
|
||||
return static_cast<OTrashBin*>(GetWorld()->AddObject(new OTrashBin(params)));
|
||||
}
|
||||
|
||||
explicit OTrashBin(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ OTrophy::OTrophy(const SpawnParams& params) : OObject(params) {
|
|||
object->pos[1] = spawnPos.y;
|
||||
object->pos[2] = spawnPos.z;
|
||||
|
||||
_emitter = reinterpret_cast<StarEmitter*>(gWorldInstance.AddEmitter(new StarEmitter()));
|
||||
_emitter = reinterpret_cast<StarEmitter*>(GetWorld()->AddEmitter(new StarEmitter()));
|
||||
}
|
||||
|
||||
void OTrophy::SetSpawnParams(SpawnParams& params) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public:
|
|||
.Behaviour = bhv,
|
||||
.Location = pos,
|
||||
};
|
||||
return static_cast<OTrophy*>(gWorldInstance.AddObject(new OTrophy(params)));
|
||||
return static_cast<OTrophy*>(GetWorld()->AddObject(new OTrophy(params)));
|
||||
}
|
||||
|
||||
explicit OTrophy(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -659,28 +659,28 @@ void Harbour::BeginPlay() {
|
|||
|
||||
|
||||
Vec3f pos = {0, 80, 0};
|
||||
// gWorldInstance.AddActor(new ACloud(pos));
|
||||
// GetWorld()->AddActor(new ACloud(pos));
|
||||
|
||||
// gWorldInstance.AddActor(new OSeagull(0, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(1, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(2, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(3, pos));
|
||||
// gWorldInstance.AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10)));
|
||||
// gWorldInstance.AddObject(new OTrophy(FVector(0,0,0), OTrophy::TrophyType::GOLD, OTrophy::Behaviour::GO_FISH));
|
||||
//gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0)));
|
||||
//gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING));
|
||||
// GetWorld()->AddActor(new OSeagull(0, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(1, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(2, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(3, pos));
|
||||
// GetWorld()->AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10)));
|
||||
// GetWorld()->AddObject(new OTrophy(FVector(0,0,0), OTrophy::TrophyType::GOLD, OTrophy::Behaviour::GO_FISH));
|
||||
//GetWorld()->AddObject(new OSnowman(FVector(0, 0, 0)));
|
||||
//GetWorld()->AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING));
|
||||
|
||||
//gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9));
|
||||
//gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400));
|
||||
// gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f)));
|
||||
//GetWorld()->AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9));
|
||||
//GetWorld()->AddObject(new OFlagpole(FVector(0, 0, -200), 0x400));
|
||||
// GetWorld()->AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f)));
|
||||
|
||||
//gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200)));
|
||||
// gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH));
|
||||
//GetWorld()->AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200)));
|
||||
// GetWorld()->AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH));
|
||||
|
||||
// gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50)));
|
||||
// GetWorld()->AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50)));
|
||||
|
||||
//gWorldInstance.AddActor(new AShip(FVector(-1694, -111, 1451), AShip::Skin::GHOSTSHIP));
|
||||
//gWorldInstance.AddActor(new AShip(FVector(2811, -83, 966), AShip::Skin::SHIP2));
|
||||
//GetWorld()->AddActor(new AShip(FVector(-1694, -111, 1451), AShip::Skin::GHOSTSHIP));
|
||||
//GetWorld()->AddActor(new AShip(FVector(2811, -83, 966), AShip::Skin::SHIP2));
|
||||
}
|
||||
|
||||
void Harbour::WhatDoesThisDo(Player* player, int8_t playerId) {
|
||||
|
|
|
|||
|
|
@ -142,8 +142,8 @@ void KalimariDesert::BeginPlay() {
|
|||
|
||||
Vec3f crossingPos = {-2500, 2, 2355};
|
||||
Vec3f crossingPos2 = {-1639, 2, 68};
|
||||
uintptr_t* crossing1 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos, 306, 310, 900.0f, 650.0f);
|
||||
uintptr_t* crossing2 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos2, 176, 182, 900.0f, 650.0f);
|
||||
uintptr_t* crossing1 = (uintptr_t*) GetWorld()->AddCrossing(crossingPos, 306, 310, 900.0f, 650.0f);
|
||||
uintptr_t* crossing2 = (uintptr_t*) GetWorld()->AddCrossing(crossingPos2, 176, 182, 900.0f, 650.0f);
|
||||
|
||||
vec3f_set(position, -1680.0f, 2.0f, 35.0f);
|
||||
position[0] *= gTrackDirection;
|
||||
|
|
|
|||
|
|
@ -209,9 +209,9 @@ void MooMooFarm::BeginPlay() {
|
|||
break;
|
||||
}
|
||||
|
||||
gWorldInstance.AddObject(new OMoleGroup(moleSpawns1, tick1));
|
||||
gWorldInstance.AddObject(new OMoleGroup(moleSpawns2, tick2));
|
||||
gWorldInstance.AddObject(new OMoleGroup(moleSpawns3, tick3));
|
||||
GetWorld()->AddObject(new OMoleGroup(moleSpawns1, tick1));
|
||||
GetWorld()->AddObject(new OMoleGroup(moleSpawns2, tick2));
|
||||
GetWorld()->AddObject(new OMoleGroup(moleSpawns3, tick3));
|
||||
}
|
||||
|
||||
if (gModeSelection == VERSUS) {
|
||||
|
|
|
|||
|
|
@ -133,9 +133,9 @@ void RainbowRoad::BeginPlay() {
|
|||
spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_rainbow_road_item_box_spawns));
|
||||
|
||||
if (gGamestate != CREDITS_SEQUENCE) {
|
||||
gWorldInstance.AddObject(new OChainChomp());
|
||||
gWorldInstance.AddObject(new OChainChomp());
|
||||
gWorldInstance.AddObject(new OChainChomp());
|
||||
GetWorld()->AddObject(new OChainChomp());
|
||||
GetWorld()->AddObject(new OChainChomp());
|
||||
GetWorld()->AddObject(new OChainChomp());
|
||||
}
|
||||
|
||||
if (gModeSelection == VERSUS) {
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ void TestTrack::BeginPlay() {
|
|||
vec3f_set(position, 50.0f, 2.0f, 50.0f);
|
||||
|
||||
Vec3f crossingPos = {0, 2, 0};
|
||||
uintptr_t* crossing1 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos, 0, 2, 900.0f, 650.0f);
|
||||
uintptr_t* crossing1 = (uintptr_t*) GetWorld()->AddCrossing(crossingPos, 0, 2, 900.0f, 650.0f);
|
||||
|
||||
position[0] *= gTrackDirection;
|
||||
rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity,
|
||||
|
|
@ -193,34 +193,34 @@ void TestTrack::BeginPlay() {
|
|||
rrxing->crossingTrigger = crossing1;
|
||||
|
||||
Vec3f pos = {0, 80, 0};
|
||||
// gWorldInstance.AddActor(new ACloud(pos));
|
||||
// GetWorld()->AddActor(new ACloud(pos));
|
||||
|
||||
// gWorldInstance.AddActor(new OSeagull(0, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(1, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(2, pos));
|
||||
// gWorldInstance.AddActor(new OSeagull(3, pos));
|
||||
// gWorldInstance.AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10)));
|
||||
// GetWorld()->AddActor(new OSeagull(0, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(1, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(2, pos));
|
||||
// GetWorld()->AddActor(new OSeagull(3, pos));
|
||||
// GetWorld()->AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10)));
|
||||
OTrophy::Spawn(FVector(0,0,0), OTrophy::TrophyType::GOLD, OTrophy::Behaviour::GO_FISH);
|
||||
//gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0)));
|
||||
//gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING));
|
||||
//GetWorld()->AddObject(new OSnowman(FVector(0, 0, 0)));
|
||||
//GetWorld()->AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING));
|
||||
|
||||
//gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9));
|
||||
//gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400));
|
||||
// gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f)));
|
||||
//GetWorld()->AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9));
|
||||
//GetWorld()->AddObject(new OFlagpole(FVector(0, 0, -200), 0x400));
|
||||
// GetWorld()->AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f)));
|
||||
|
||||
//gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200)));
|
||||
// gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH));
|
||||
//GetWorld()->AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200)));
|
||||
// GetWorld()->AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH));
|
||||
|
||||
// gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50)));
|
||||
// GetWorld()->AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50)));
|
||||
//OThwomp::Spawn(0, 0, 0, 1.0f, 0, 1, 7);
|
||||
|
||||
//gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 0);
|
||||
//gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 8);
|
||||
//GetWorld()->AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 0);
|
||||
//GetWorld()->AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 8);
|
||||
|
||||
OBombKart::Spawn(0, 25, 4, 0.8333333f);
|
||||
OBombKart::Spawn(0, 45, 4, 0.8333333f);
|
||||
|
||||
// gWorldInstance.AddActor(new AShip(FVector(0, 0, 0), AShip::Skin::SHIP3));
|
||||
// GetWorld()->AddActor(new AShip(FVector(0, 0, 0), AShip::Skin::SHIP3));
|
||||
|
||||
// OGrandPrixBalloons::Spawn(FVector(0, 0, 0));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -553,7 +553,7 @@ f32 Track::GetWaterLevel(FVector pos, Collision* collision) {
|
|||
float highestWater = -FLT_MAX;
|
||||
bool found = false;
|
||||
|
||||
for (const auto& volume : gWorldInstance.GetTrack()->WaterVolumes) {
|
||||
for (const auto& volume : GetWorld()->GetTrack()->WaterVolumes) {
|
||||
if (pos.x >= volume.MinX && pos.x <= volume.MaxX && pos.z >= volume.MinZ && pos.z <= volume.MaxZ) {
|
||||
// Choose the highest water volume the player is over
|
||||
if (!found || volume.Height > highestWater) {
|
||||
|
|
@ -564,7 +564,7 @@ f32 Track::GetWaterLevel(FVector pos, Collision* collision) {
|
|||
}
|
||||
|
||||
// If player is not over-top of a water volume then return the tracks default water level
|
||||
return found ? highestWater : gWorldInstance.GetTrack()->Props.WaterLevel;
|
||||
return found ? highestWater : GetWorld()->GetTrack()->Props.WaterLevel;
|
||||
}
|
||||
|
||||
void Track::ScrollingTextures() {
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class ABoat : public AActor {
|
|||
.PathPoint = pathPoint,
|
||||
.Speed = speed,
|
||||
};
|
||||
return static_cast<ABoat*>(gWorldInstance.AddActor(new ABoat(params)));
|
||||
return static_cast<ABoat*>(GetWorld()->AddActor(new ABoat(params)));
|
||||
}
|
||||
|
||||
ABoat::SpawnMode SpawnType = ABoat::SpawnMode::AUTO;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class ABus : public AActor {
|
|||
.Speed = speedA,
|
||||
.SpeedB = speedB
|
||||
};
|
||||
return static_cast<ABus*>(gWorldInstance.AddActor(new ABus(params)));
|
||||
return static_cast<ABus*>(GetWorld()->AddActor(new ABus(params)));
|
||||
}
|
||||
|
||||
explicit ABus(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class ACar : public AActor {
|
|||
.Speed = speedA,
|
||||
.SpeedB = speedB
|
||||
};
|
||||
return static_cast<ACar*>(gWorldInstance.AddActor(new ACar(params)));
|
||||
return static_cast<ACar*>(GetWorld()->AddActor(new ACar(params)));
|
||||
}
|
||||
|
||||
const char* Type;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class ATankerTruck : public AActor {
|
|||
.Speed = speedA,
|
||||
.SpeedB = speedB
|
||||
};
|
||||
return static_cast<ATankerTruck*>(gWorldInstance.AddActor(new ATankerTruck(params)));
|
||||
return static_cast<ATankerTruck*>(GetWorld()->AddActor(new ATankerTruck(params)));
|
||||
}
|
||||
|
||||
explicit ATankerTruck(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@
|
|||
|
||||
#include "Actor.h"
|
||||
|
||||
class World;
|
||||
extern World gWorldInstance;
|
||||
|
||||
extern "C" {
|
||||
#include "main.h"
|
||||
#include "vehicles.h"
|
||||
|
|
@ -72,7 +69,7 @@ class ATrain : public AActor {
|
|||
.Bool = tender,
|
||||
.Speed = speed, // 120.0f is about the maximum usable value
|
||||
};
|
||||
return static_cast<ATrain*>(gWorldInstance.AddActor(new ATrain(params)));
|
||||
return static_cast<ATrain*>(GetWorld()->AddActor(new ATrain(params)));
|
||||
}
|
||||
|
||||
virtual void SetSpawnParams(SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ class ATruck : public AActor {
|
|||
.Speed = speedA,
|
||||
.SpeedB = speedB
|
||||
};
|
||||
return static_cast<ATruck*>(gWorldInstance.AddActor(new ATruck(params)));
|
||||
return static_cast<ATruck*>(GetWorld()->AddActor(new ATruck(params)));
|
||||
}
|
||||
|
||||
explicit ATruck(const SpawnParams& params);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ extern "C" void Graphics_PushFrame(Gfx* data) {
|
|||
}
|
||||
|
||||
// Create the world instance
|
||||
World gWorldInstance;
|
||||
static World sWorldInstance;
|
||||
|
||||
// Deferred cleaning when clearing all actors in the editor
|
||||
bool bCleanWorld = false;
|
||||
|
|
@ -87,11 +87,11 @@ void CustomEngineInit() {
|
|||
gPodiumCeremony = std::make_unique<PodiumCeremony>();
|
||||
|
||||
gMushroomCup = new Cup("mk:mushroom_cup", "Mushroom Cup", {
|
||||
"mk:luigi_raceway",
|
||||
"mk:moo_moo_farm",
|
||||
"mk:koopa_troopa_beach",
|
||||
"mk:kalimari_desert"
|
||||
});
|
||||
"mk:luigi_raceway",
|
||||
"mk:moo_moo_farm",
|
||||
"mk:koopa_troopa_beach",
|
||||
"mk:kalimari_desert"
|
||||
});
|
||||
|
||||
gFlowerCup = new Cup("mk:flower_cup", "Flower Cup", {
|
||||
"mk:toads_turnpike",
|
||||
|
|
@ -122,11 +122,11 @@ void CustomEngineInit() {
|
|||
});
|
||||
|
||||
/* Instantiate Cups */
|
||||
gWorldInstance.AddCup(gMushroomCup);
|
||||
gWorldInstance.AddCup(gFlowerCup);
|
||||
gWorldInstance.AddCup(gStarCup);
|
||||
gWorldInstance.AddCup(gSpecialCup);
|
||||
gWorldInstance.AddCup(gBattleCup);
|
||||
GetWorld()->AddCup(gMushroomCup);
|
||||
GetWorld()->AddCup(gFlowerCup);
|
||||
GetWorld()->AddCup(gStarCup);
|
||||
GetWorld()->AddCup(gSpecialCup);
|
||||
GetWorld()->AddCup(gBattleCup);
|
||||
|
||||
//SelectMarioRaceway(); // This results in a nullptr
|
||||
SetMarioRaceway();
|
||||
|
|
@ -159,45 +159,45 @@ void HM_DrawIntro() {
|
|||
// Set default track; mario raceway
|
||||
void SetMarioRaceway(void) {
|
||||
SelectMarioRaceway();
|
||||
gWorldInstance.SetCurrentCup(gMushroomCup);
|
||||
gWorldInstance.GetCurrentCup()->CursorPosition = 3;
|
||||
gWorldInstance.CupIndex = 0;
|
||||
GetWorld()->SetCurrentCup(gMushroomCup);
|
||||
GetWorld()->GetCurrentCup()->CursorPosition = 3;
|
||||
GetWorld()->CupIndex = 0;
|
||||
}
|
||||
|
||||
u32 WorldNextCup(void) {
|
||||
return gWorldInstance.NextCup();
|
||||
return GetWorld()->NextCup();
|
||||
}
|
||||
|
||||
u32 WorldPreviousCup(void) {
|
||||
return gWorldInstance.PreviousCup();
|
||||
return GetWorld()->PreviousCup();
|
||||
}
|
||||
|
||||
void CM_SetCup(void* cup) {
|
||||
gWorldInstance.SetCurrentCup((Cup*) cup);
|
||||
GetWorld()->SetCurrentCup((Cup*) cup);
|
||||
}
|
||||
|
||||
void* GetCup() {
|
||||
return gWorldInstance.GetCurrentCup();
|
||||
return GetWorld()->GetCurrentCup();
|
||||
}
|
||||
|
||||
u32 GetCupIndex(void) {
|
||||
return gWorldInstance.GetCupIndex();
|
||||
return GetWorld()->GetCupIndex();
|
||||
}
|
||||
|
||||
void CM_SetCupIndex(size_t index) {
|
||||
gWorldInstance.SetCupIndex(index);
|
||||
GetWorld()->SetCupIndex(index);
|
||||
}
|
||||
|
||||
const char* GetCupName(void) {
|
||||
return gWorldInstance.GetCurrentCup()->Name;
|
||||
return GetWorld()->GetCurrentCup()->Name;
|
||||
}
|
||||
|
||||
void LoadTrack() {
|
||||
gWorldInstance.GetRaceManager().Load();
|
||||
GetWorld()->GetRaceManager().Load();
|
||||
}
|
||||
|
||||
void CM_VehicleCollision(s32 playerId, Player* player) {
|
||||
for (auto& actor : gWorldInstance.Actors) {
|
||||
for (auto& actor : GetWorld()->Actors) {
|
||||
if (actor) {
|
||||
actor->VehicleCollision(playerId, player);
|
||||
}
|
||||
|
|
@ -205,7 +205,7 @@ void CM_VehicleCollision(s32 playerId, Player* player) {
|
|||
}
|
||||
|
||||
void CM_BombKartsWaypoint(s32 cameraId) {
|
||||
for (auto& object : gWorldInstance.Objects) {
|
||||
for (auto& object : GetWorld()->Objects) {
|
||||
if (auto kart = dynamic_cast<OBombKart*>(object)) {
|
||||
if (kart) {
|
||||
kart->Waypoint(cameraId);
|
||||
|
|
@ -221,26 +221,26 @@ void CM_DisplayBattleBombKart(s32 playerId, s32 primAlpha) {
|
|||
}
|
||||
|
||||
if (primAlpha == 0) {
|
||||
gWorldInstance.mPlayerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::DISABLED;
|
||||
gWorldInstance.mPlayerBombKart[playerId]._primAlpha = primAlpha;
|
||||
GetWorld()->mPlayerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::DISABLED;
|
||||
GetWorld()->mPlayerBombKart[playerId]._primAlpha = primAlpha;
|
||||
} else {
|
||||
gWorldInstance.mPlayerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::ACTIVE;
|
||||
gWorldInstance.mPlayerBombKart[playerId]._primAlpha = primAlpha;
|
||||
GetWorld()->mPlayerBombKart[playerId].state = PlayerBombKart::PlayerBombKartState::ACTIVE;
|
||||
GetWorld()->mPlayerBombKart[playerId]._primAlpha = primAlpha;
|
||||
}
|
||||
}
|
||||
|
||||
void CM_DrawBattleBombKarts(s32 cameraId) {
|
||||
for (size_t i = 0; i < gPlayerCount; i++) {
|
||||
gWorldInstance.mPlayerBombKart[i].Draw(i, cameraId);
|
||||
GetWorld()->mPlayerBombKart[i].Draw(i, cameraId);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_ClearVehicles(void) {
|
||||
gWorldInstance.Crossings.clear();
|
||||
GetWorld()->Crossings.clear();
|
||||
}
|
||||
|
||||
void CM_CrossingTrigger() {
|
||||
for (auto& crossing : gWorldInstance.Crossings) {
|
||||
for (auto& crossing : GetWorld()->Crossings) {
|
||||
if (crossing) {
|
||||
crossing->CrossingTrigger();
|
||||
}
|
||||
|
|
@ -248,7 +248,7 @@ void CM_CrossingTrigger() {
|
|||
}
|
||||
|
||||
void CM_AICrossingBehaviour(s32 playerId) {
|
||||
for (auto& crossing : gWorldInstance.Crossings) {
|
||||
for (auto& crossing : GetWorld()->Crossings) {
|
||||
if (crossing) {
|
||||
crossing->AICrossingBehaviour(playerId);
|
||||
}
|
||||
|
|
@ -271,15 +271,15 @@ s32 CM_GetCrossingOnTriggered(uintptr_t* crossing) {
|
|||
* They do not use DrawCredits() and they do not use track sections.
|
||||
*/
|
||||
void CM_DrawTrack(ScreenContext* screen) {
|
||||
if (nullptr == gWorldInstance.GetTrack()) {
|
||||
if (nullptr == GetWorld()->GetTrack()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Custom tracks should never use DrawCredits();
|
||||
if (gWorldInstance.GetTrack()->IsMod()) {
|
||||
if (GetWorld()->GetTrack()->IsMod()) {
|
||||
switch(screen->camera->renderMode) {
|
||||
default:
|
||||
gWorldInstance.GetTrack()->Draw(screen);
|
||||
GetWorld()->GetTrack()->Draw(screen);
|
||||
break;
|
||||
case RENDER_COLLISION_MESH:
|
||||
render_collision();
|
||||
|
|
@ -288,10 +288,10 @@ void CM_DrawTrack(ScreenContext* screen) {
|
|||
} else {
|
||||
switch(screen->camera->renderMode) {
|
||||
case RENDER_FULL_SCENE:
|
||||
gWorldInstance.GetTrack()->DrawCredits();
|
||||
GetWorld()->GetTrack()->DrawCredits();
|
||||
break;
|
||||
case RENDER_TRACK_SECTIONS:
|
||||
gWorldInstance.GetTrack()->Draw(screen);
|
||||
GetWorld()->GetTrack()->Draw(screen);
|
||||
break;
|
||||
case RENDER_COLLISION_MESH:
|
||||
render_collision();
|
||||
|
|
@ -301,20 +301,20 @@ void CM_DrawTrack(ScreenContext* screen) {
|
|||
}
|
||||
|
||||
void CM_TickActors() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.TickActors();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->TickActors();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_DrawActors(Camera* camera) {
|
||||
//AActor* a = gWorldInstance.ConvertActorToAActor(actor);
|
||||
for (const auto& actor : gWorldInstance.Actors) {
|
||||
//AActor* a = GetWorld()->ConvertActorToAActor(actor);
|
||||
for (const auto& actor : GetWorld()->Actors) {
|
||||
if (actor->IsMod()) {
|
||||
actor->Draw(camera);
|
||||
}
|
||||
}
|
||||
|
||||
for (auto* camera : gWorldInstance.Cameras) {
|
||||
for (auto* camera : GetWorld()->Cameras) {
|
||||
if (auto* tourCam = dynamic_cast<TourCamera*>(camera)) {
|
||||
if (tourCam->IsActive()) {
|
||||
tourCam->Draw();
|
||||
|
|
@ -324,40 +324,40 @@ void CM_DrawActors(Camera* camera) {
|
|||
}
|
||||
|
||||
void CM_DrawStaticMeshActors() {
|
||||
gWorldInstance.DrawStaticMeshActors();
|
||||
GetWorld()->DrawStaticMeshActors();
|
||||
}
|
||||
|
||||
void CM_BeginPlay() {
|
||||
static bool tour = false;
|
||||
auto track = gWorldInstance.GetTrack();
|
||||
auto track = GetWorld()->GetTrack();
|
||||
|
||||
if (nullptr == track) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (tour) {
|
||||
// gWorldInstance.Cameras[2]->SetActive(true);
|
||||
// gScreenOneCtx->camera = gWorldInstance.Cameras[2]->Get();
|
||||
if (reinterpret_cast<TourCamera*>(gWorldInstance.Cameras[2])->IsTourComplete()) {
|
||||
// GetWorld()->Cameras[2]->SetActive(true);
|
||||
// gScreenOneCtx->camera = GetWorld()->Cameras[2]->Get();
|
||||
if (reinterpret_cast<TourCamera*>(GetWorld()->Cameras[2])->IsTourComplete()) {
|
||||
tour = false;
|
||||
gScreenOneCtx->pendingCamera = &cameras[0];
|
||||
}
|
||||
}
|
||||
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
if (GetWorld()->GetTrack()) {
|
||||
// This line should likely be moved.
|
||||
// It's here so PreInit is after the scene file has been loaded
|
||||
// It used to be at the start of BeginPlay
|
||||
Editor::LoadLevel(gWorldInstance.GetTrack().get(), gWorldInstance.GetTrack()->SceneFilePtr);
|
||||
Editor::LoadLevel(GetWorld()->GetTrack().get(), GetWorld()->GetTrack()->SceneFilePtr);
|
||||
}
|
||||
|
||||
gWorldInstance.GetRaceManager().PreInit();
|
||||
gWorldInstance.GetRaceManager().BeginPlay();
|
||||
gWorldInstance.GetRaceManager().PostInit();
|
||||
GetWorld()->GetRaceManager().PreInit();
|
||||
GetWorld()->GetRaceManager().BeginPlay();
|
||||
GetWorld()->GetRaceManager().PostInit();
|
||||
}
|
||||
|
||||
Camera* CM_GetPlayerCamera(s32 playerIndex) {
|
||||
for (GameCamera* cam : gWorldInstance.Cameras) {
|
||||
for (GameCamera* cam : GetWorld()->Cameras) {
|
||||
// Make sure this is a player camera and not a different type of camera
|
||||
if (typeid(*cam) == typeid(GameCamera)) {
|
||||
Camera* camera = cam->Get();
|
||||
|
|
@ -370,7 +370,7 @@ Camera* CM_GetPlayerCamera(s32 playerIndex) {
|
|||
}
|
||||
|
||||
void CM_SetViewProjection(Camera* camera) {
|
||||
for (GameCamera* gameCamera : gWorldInstance.Cameras) {
|
||||
for (GameCamera* gameCamera : GetWorld()->Cameras) {
|
||||
if (camera == gameCamera->Get()) {
|
||||
gameCamera->SetViewProjection();
|
||||
}
|
||||
|
|
@ -378,62 +378,62 @@ void CM_SetViewProjection(Camera* camera) {
|
|||
}
|
||||
|
||||
void CM_TickCameras() {
|
||||
gWorldInstance.TickCameras();
|
||||
GetWorld()->TickCameras();
|
||||
}
|
||||
|
||||
Camera* CM_AddCamera(Vec3f spawn, s16 rot, u32 mode) {
|
||||
if (gWorldInstance.Cameras.size() >= NUM_CAMERAS) {
|
||||
if (GetWorld()->Cameras.size() >= NUM_CAMERAS) {
|
||||
printf("Reached the max number of cameras, %d\n", NUM_CAMERAS);
|
||||
return nullptr;
|
||||
}
|
||||
gWorldInstance.Cameras.push_back(new GameCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return gWorldInstance.Cameras.back()->Get();
|
||||
GetWorld()->Cameras.push_back(new GameCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return GetWorld()->Cameras.back()->Get();
|
||||
}
|
||||
|
||||
Camera* CM_AddFreeCamera(Vec3f spawn, s16 rot, u32 mode) {
|
||||
if (gWorldInstance.Cameras.size() >= NUM_CAMERAS) {
|
||||
if (GetWorld()->Cameras.size() >= NUM_CAMERAS) {
|
||||
printf("Reached the max number of cameras, %d\n", NUM_CAMERAS);
|
||||
return nullptr;
|
||||
}
|
||||
gWorldInstance.Cameras.push_back(new FreeCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return gWorldInstance.Cameras.back()->Get();
|
||||
GetWorld()->Cameras.push_back(new FreeCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return GetWorld()->Cameras.back()->Get();
|
||||
}
|
||||
|
||||
Camera* CM_AddTourCamera(Vec3f spawn, s16 rot, u32 mode) {
|
||||
if (gWorldInstance.Cameras.size() >= NUM_CAMERAS) {
|
||||
if (GetWorld()->Cameras.size() >= NUM_CAMERAS) {
|
||||
// This is to prevent soft locking the game
|
||||
printf("Reached the max number of cameras, %d\n", NUM_CAMERAS);
|
||||
if (gWorldInstance.GetTrack()->bTourEnabled) {
|
||||
if (GetWorld()->GetTrack()->bTourEnabled) {
|
||||
spawn_and_set_player_spawns();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (nullptr == gWorldInstance.GetTrack()) {
|
||||
if (nullptr == GetWorld()->GetTrack()) {
|
||||
// This is to prevent soft locking the game
|
||||
if (gWorldInstance.GetTrack()->bTourEnabled) {
|
||||
if (GetWorld()->GetTrack()->bTourEnabled) {
|
||||
spawn_and_set_player_spawns();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (gWorldInstance.GetTrack()->TourShots.size() == 0) {
|
||||
if (GetWorld()->GetTrack()->TourShots.size() == 0) {
|
||||
// This is to prevent soft locking the game
|
||||
if (gWorldInstance.GetTrack()->bTourEnabled) {
|
||||
if (GetWorld()->GetTrack()->bTourEnabled) {
|
||||
spawn_and_set_player_spawns();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
gWorldInstance.Cameras.push_back(new TourCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
TourCamera* tour = static_cast<TourCamera*>(gWorldInstance.Cameras.back());
|
||||
GetWorld()->Cameras.push_back(new TourCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
TourCamera* tour = static_cast<TourCamera*>(GetWorld()->Cameras.back());
|
||||
tour->SetActive(true);
|
||||
return tour->Get();
|
||||
}
|
||||
|
||||
bool CM_IsTourEnabled() {
|
||||
if (nullptr != gWorldInstance.GetTrack()) {
|
||||
if ((gWorldInstance.GetTrack()->bTourEnabled) && (gTourComplete == false)) {
|
||||
if (nullptr != GetWorld()->GetTrack()) {
|
||||
if ((GetWorld()->GetTrack()->bTourEnabled) && (gTourComplete == false)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
@ -444,12 +444,12 @@ bool CM_IsTourEnabled() {
|
|||
}
|
||||
|
||||
Camera* CM_AddLookBehindCamera(Vec3f spawn, s16 rot, u32 mode) {
|
||||
if (gWorldInstance.Cameras.size() >= NUM_CAMERAS) {
|
||||
if (GetWorld()->Cameras.size() >= NUM_CAMERAS) {
|
||||
printf("Reached the max number of cameras, %d\n", NUM_CAMERAS);
|
||||
return nullptr;
|
||||
}
|
||||
gWorldInstance.Cameras.push_back(new LookBehindCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return gWorldInstance.Cameras.back()->Get();
|
||||
GetWorld()->Cameras.push_back(new LookBehindCamera(FVector(spawn[0], spawn[1], spawn[2]), rot, mode));
|
||||
return GetWorld()->Cameras.back()->Get();
|
||||
}
|
||||
|
||||
void CM_AttachCamera(Camera* camera, s32 playerIdx) {
|
||||
|
|
@ -457,13 +457,13 @@ void CM_AttachCamera(Camera* camera, s32 playerIdx) {
|
|||
}
|
||||
|
||||
void CM_CameraSetActive(size_t idx, bool state) {
|
||||
if (idx < gWorldInstance.Cameras.size()) {
|
||||
gWorldInstance.Cameras[idx]->SetActive(state);
|
||||
if (idx < GetWorld()->Cameras.size()) {
|
||||
GetWorld()->Cameras[idx]->SetActive(state);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_SetFreeCamera(bool state) {
|
||||
for (auto* cam : gWorldInstance.Cameras) {
|
||||
for (auto* cam : GetWorld()->Cameras) {
|
||||
if (cam->Get() == gScreenOneCtx->freeCamera) {
|
||||
if (state) {
|
||||
gScreenOneCtx->pendingCamera = gScreenOneCtx->freeCamera;
|
||||
|
|
@ -483,7 +483,7 @@ void CM_SetFreeCamera(bool state) {
|
|||
}
|
||||
|
||||
void CM_ActivateTourCamera(Camera* camera) {
|
||||
for (auto* cam : gWorldInstance.Cameras) {
|
||||
for (auto* cam : GetWorld()->Cameras) {
|
||||
if (cam->Get() == camera) {
|
||||
cam->SetActive(true);
|
||||
}
|
||||
|
|
@ -491,22 +491,22 @@ void CM_ActivateTourCamera(Camera* camera) {
|
|||
}
|
||||
|
||||
void CM_TickObjects() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.TickObjects();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->TickObjects();
|
||||
}
|
||||
}
|
||||
|
||||
// A couple objects such as lakitu are ticked inside of process_game_tick which support 60fps.
|
||||
// This is a fallback to support that.
|
||||
void CM_TickObjects60fps() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.TickObjects60fps();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->TickObjects60fps();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_DrawObjects(s32 cameraId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.DrawObjects(cameraId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->DrawObjects(cameraId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -523,110 +523,110 @@ void CM_Editor_SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 mi
|
|||
}
|
||||
|
||||
void CM_TickParticles() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.TickParticles();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->TickParticles();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_DrawParticles(s32 cameraId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.DrawParticles(cameraId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->DrawParticles(cameraId);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_InitClouds() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->InitClouds();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->InitClouds();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_TickClouds(s32 arg0, Camera* camera) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->TickClouds(arg0, camera);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->TickClouds(arg0, camera);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_Waypoints(Player* player, int8_t playerId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->Waypoints(player, playerId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->Waypoints(player, playerId);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6,
|
||||
f32* arg7) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->SomeCollisionThing(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->SomeCollisionThing(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_InitTrackObjects() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->InitTrackObjects();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->InitTrackObjects();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_TickTrackObjects() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->TickTrackObjects();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->TickTrackObjects();
|
||||
}
|
||||
TrainSmokeTick();
|
||||
}
|
||||
|
||||
void CM_DrawTrackObjects(s32 cameraId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->DrawTrackObjects(cameraId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->DrawTrackObjects(cameraId);
|
||||
}
|
||||
|
||||
TrainSmokeDraw(cameraId);
|
||||
}
|
||||
|
||||
void CM_SomeSounds() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->SomeSounds();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->SomeSounds();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_CreditsSpawnActors() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->CreditsSpawnActors();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->CreditsSpawnActors();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_WhatDoesThisDo(Player* player, int8_t playerId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->WhatDoesThisDo(player, playerId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->WhatDoesThisDo(player, playerId);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_WhatDoesThisDoAI(Player* player, int8_t playerId) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->WhatDoesThisDoAI(player, playerId);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->WhatDoesThisDoAI(player, playerId);
|
||||
}
|
||||
}
|
||||
|
||||
void CM_SetStaffGhost() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->SetStaffGhost();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->SetStaffGhost();
|
||||
}
|
||||
}
|
||||
|
||||
Properties* CM_GetProps() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
return &gWorldInstance.GetTrack()->Props;
|
||||
if (GetWorld()->GetTrack()) {
|
||||
return &GetWorld()->GetTrack()->Props;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void CM_ScrollingTextures() {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->ScrollingTextures();
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->ScrollingTextures();
|
||||
}
|
||||
}
|
||||
|
||||
void CM_DrawWater(ScreenContext* screen, uint16_t pathCounter, uint16_t cameraRot,
|
||||
uint16_t playerDirection) {
|
||||
if (gWorldInstance.GetTrack()) {
|
||||
gWorldInstance.GetTrack()->DrawWater(screen, pathCounter, cameraRot, playerDirection);
|
||||
if (GetWorld()->GetTrack()) {
|
||||
GetWorld()->GetTrack()->DrawWater(screen, pathCounter, cameraRot, playerDirection);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -640,8 +640,8 @@ void CM_SpawnStarterLakitu() {
|
|||
|
||||
for (size_t i = 0; i < gPlayerCountSelection1; i++) {
|
||||
OLakitu* lakitu = new OLakitu(i, OLakitu::LakituType::STARTER);
|
||||
gWorldInstance.Lakitus[i] = lakitu;
|
||||
gWorldInstance.AddObject(lakitu);
|
||||
GetWorld()->Lakitus[i] = lakitu;
|
||||
GetWorld()->AddObject(lakitu);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -650,50 +650,50 @@ void CM_ActivateFinishLakitu(s32 playerId) {
|
|||
if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) {
|
||||
return;
|
||||
}
|
||||
gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINISH);
|
||||
GetWorld()->Lakitus[playerId]->Activate(OLakitu::LakituType::FINISH);
|
||||
}
|
||||
|
||||
void CM_ActivateSecondLapLakitu(s32 playerId) {
|
||||
if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) {
|
||||
return;
|
||||
}
|
||||
gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::SECOND_LAP);
|
||||
GetWorld()->Lakitus[playerId]->Activate(OLakitu::LakituType::SECOND_LAP);
|
||||
}
|
||||
|
||||
void CM_ActivateFinalLapLakitu(s32 playerId) {
|
||||
if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) {
|
||||
return;
|
||||
}
|
||||
gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::FINAL_LAP);
|
||||
GetWorld()->Lakitus[playerId]->Activate(OLakitu::LakituType::FINAL_LAP);
|
||||
}
|
||||
|
||||
void CM_ActivateReverseLakitu(s32 playerId) {
|
||||
if ((gDemoMode) || (gGamestate == CREDITS_SEQUENCE)) {
|
||||
return;
|
||||
}
|
||||
gWorldInstance.Lakitus[playerId]->Activate(OLakitu::LakituType::REVERSE);
|
||||
GetWorld()->Lakitus[playerId]->Activate(OLakitu::LakituType::REVERSE);
|
||||
}
|
||||
|
||||
size_t GetCupCursorPosition() {
|
||||
return gWorldInstance.GetCurrentCup()->CursorPosition;
|
||||
return GetWorld()->GetCurrentCup()->CursorPosition;
|
||||
}
|
||||
|
||||
void SetCupCursorPosition(size_t position) {
|
||||
gWorldInstance.GetCurrentCup()->SetTrack(position);
|
||||
// gWorldInstance.CurrentCup->CursorPosition = position;
|
||||
GetWorld()->GetCurrentCup()->SetTrack(position);
|
||||
// GetWorld()->CurrentCup->CursorPosition = position;
|
||||
}
|
||||
|
||||
size_t GetCupSize() {
|
||||
return gWorldInstance.GetCurrentCup()->GetSize();
|
||||
return GetWorld()->GetCurrentCup()->GetSize();
|
||||
}
|
||||
|
||||
void* GetTrack(void) {
|
||||
return gWorldInstance.GetTrack().get();
|
||||
return GetWorld()->GetTrack().get();
|
||||
}
|
||||
|
||||
struct Actor* CM_GetActor(size_t index) {
|
||||
if (index < gWorldInstance.Actors.size()) {
|
||||
AActor* actor = gWorldInstance.Actors[index];
|
||||
if (index < GetWorld()->Actors.size()) {
|
||||
AActor* actor = GetWorld()->Actors[index];
|
||||
return reinterpret_cast<struct Actor*>(reinterpret_cast<char*>(actor) + sizeof(void*));
|
||||
} else {
|
||||
// throw std::runtime_error("GetActor() index out of bounds");
|
||||
|
|
@ -705,7 +705,7 @@ size_t CM_FindActorIndex(Actor* actor) {
|
|||
// Move the ptr back to look at the vtable.
|
||||
// This gets us the proper C++ class instead of just the variables used in C.
|
||||
AActor* a = reinterpret_cast<AActor*>(reinterpret_cast<char*>(actor) - sizeof(void*));
|
||||
auto actors = gWorldInstance.Actors;
|
||||
auto actors = GetWorld()->Actors;
|
||||
|
||||
auto it = std::find(actors.begin(), actors.end(), static_cast<AActor*>(a));
|
||||
if (it != actors.end()) {
|
||||
|
|
@ -716,7 +716,7 @@ size_t CM_FindActorIndex(Actor* actor) {
|
|||
}
|
||||
|
||||
void CM_DeleteActor(size_t index) {
|
||||
std::vector<AActor*> actors = gWorldInstance.Actors;
|
||||
std::vector<AActor*> actors = GetWorld()->Actors;
|
||||
if (index < actors.size()) {
|
||||
actors.erase(actors.begin() + index);
|
||||
}
|
||||
|
|
@ -726,27 +726,27 @@ void CM_DeleteActor(size_t index) {
|
|||
* Clean up actors and other game objects.
|
||||
*/
|
||||
void CM_CleanWorld(void) {
|
||||
gWorldInstance.CleanWorld();
|
||||
GetWorld()->CleanWorld();
|
||||
}
|
||||
|
||||
void CM_CleanCameras(void) {
|
||||
for (auto& camera : gWorldInstance.Cameras) {
|
||||
for (auto& camera : GetWorld()->Cameras) {
|
||||
delete camera;
|
||||
}
|
||||
|
||||
gWorldInstance.Cameras.clear();
|
||||
GetWorld()->Cameras.clear();
|
||||
}
|
||||
|
||||
struct Actor* CM_AddBaseActor() {
|
||||
return (struct Actor*) gWorldInstance.AddBaseActor();
|
||||
return (struct Actor*) GetWorld()->AddBaseActor();
|
||||
}
|
||||
|
||||
void CM_ActorBeginPlay(struct Actor* actor) {
|
||||
gWorldInstance.ActorBeginPlay(actor);
|
||||
GetWorld()->ActorBeginPlay(actor);
|
||||
}
|
||||
|
||||
void CM_ActorGenerateCollision(struct Actor* actor) {
|
||||
AActor* act = gWorldInstance.ConvertActorToAActor(actor);
|
||||
AActor* act = GetWorld()->ConvertActorToAActor(actor);
|
||||
|
||||
if ((nullptr != act->Model) && (act->Model[0] != '\0')) {
|
||||
if (act->Triangles.size() == 0) {
|
||||
|
|
@ -773,11 +773,11 @@ void Editor_CleanWorld() {
|
|||
}
|
||||
|
||||
size_t CM_GetActorSize() {
|
||||
return gWorldInstance.Actors.size();
|
||||
return GetWorld()->Actors.size();
|
||||
}
|
||||
|
||||
void CM_ActorCollision(Player* player, Actor* actor) {
|
||||
AActor* a = gWorldInstance.ConvertActorToAActor(actor);
|
||||
AActor* a = GetWorld()->ConvertActorToAActor(actor);
|
||||
|
||||
if (a->IsMod()) {
|
||||
a->Collision(player, a);
|
||||
|
|
@ -786,53 +786,53 @@ void CM_ActorCollision(Player* player, Actor* actor) {
|
|||
|
||||
f32 CM_GetWaterLevel(Vec3f pos, Collision* collision) {
|
||||
FVector fPos = {pos[0], pos[1], pos[2]};
|
||||
return gWorldInstance.GetTrack()->GetWaterLevel(fPos, collision);
|
||||
return GetWorld()->GetTrack()->GetWaterLevel(fPos, collision);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
bool IsMarioRaceway() { return dynamic_cast<MarioRaceway*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsLuigiRaceway() { return dynamic_cast<LuigiRaceway*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsChocoMountain() { return dynamic_cast<ChocoMountain*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsBowsersCastle() { return dynamic_cast<BowsersCastle*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsBansheeBoardwalk() { return dynamic_cast<BansheeBoardwalk*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsYoshiValley() { return dynamic_cast<YoshiValley*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsFrappeSnowland() { return dynamic_cast<FrappeSnowland*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsKoopaTroopaBeach() { return dynamic_cast<KoopaTroopaBeach*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsRoyalRaceway() { return dynamic_cast<RoyalRaceway*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsMooMooFarm() { return dynamic_cast<MooMooFarm*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsToadsTurnpike() { return dynamic_cast<ToadsTurnpike*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsKalimariDesert() { return dynamic_cast<KalimariDesert*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsSherbetLand() { return dynamic_cast<SherbetLand*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsRainbowRoad() { return dynamic_cast<RainbowRoad*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsWarioStadium() { return dynamic_cast<WarioStadium*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsBlockFort() { return dynamic_cast<BlockFort*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsSkyscraper() { return dynamic_cast<Skyscraper*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsDoubleDeck() { return dynamic_cast<DoubleDeck*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsDkJungle() { return dynamic_cast<DKJungle*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsBigDonut() { return dynamic_cast<BigDonut*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsPodiumCeremony() { return dynamic_cast<PodiumCeremony*>(gWorldInstance.GetTrack().get()) != nullptr; }
|
||||
bool IsMarioRaceway() { return dynamic_cast<MarioRaceway*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsLuigiRaceway() { return dynamic_cast<LuigiRaceway*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsChocoMountain() { return dynamic_cast<ChocoMountain*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsBowsersCastle() { return dynamic_cast<BowsersCastle*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsBansheeBoardwalk() { return dynamic_cast<BansheeBoardwalk*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsYoshiValley() { return dynamic_cast<YoshiValley*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsFrappeSnowland() { return dynamic_cast<FrappeSnowland*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsKoopaTroopaBeach() { return dynamic_cast<KoopaTroopaBeach*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsRoyalRaceway() { return dynamic_cast<RoyalRaceway*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsMooMooFarm() { return dynamic_cast<MooMooFarm*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsToadsTurnpike() { return dynamic_cast<ToadsTurnpike*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsKalimariDesert() { return dynamic_cast<KalimariDesert*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsSherbetLand() { return dynamic_cast<SherbetLand*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsRainbowRoad() { return dynamic_cast<RainbowRoad*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsWarioStadium() { return dynamic_cast<WarioStadium*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsBlockFort() { return dynamic_cast<BlockFort*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsSkyscraper() { return dynamic_cast<Skyscraper*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsDoubleDeck() { return dynamic_cast<DoubleDeck*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsDkJungle() { return dynamic_cast<DKJungle*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsBigDonut() { return dynamic_cast<BigDonut*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
bool IsPodiumCeremony() { return dynamic_cast<PodiumCeremony*>(GetWorld()->GetTrack().get()) != nullptr; }
|
||||
|
||||
void SelectMarioRaceway() { gWorldInstance.SetCurrentTrack(std::make_shared<MarioRaceway>()); }
|
||||
void SelectLuigiRaceway() { gWorldInstance.SetCurrentTrack(std::make_shared<LuigiRaceway>()); }
|
||||
void SelectChocoMountain() { gWorldInstance.SetCurrentTrack(std::make_shared<ChocoMountain>()); }
|
||||
void SelectBowsersCastle() { gWorldInstance.SetCurrentTrack(std::make_shared<BowsersCastle>()); }
|
||||
void SelectBansheeBoardwalk() { gWorldInstance.SetCurrentTrack(std::make_shared<BansheeBoardwalk>()); }
|
||||
void SelectYoshiValley() { gWorldInstance.SetCurrentTrack(std::make_shared<YoshiValley>()); }
|
||||
void SelectFrappeSnowland() { gWorldInstance.SetCurrentTrack(std::make_shared<FrappeSnowland>()); }
|
||||
void SelectKoopaTroopaBeach() { gWorldInstance.SetCurrentTrack(std::make_shared<KoopaTroopaBeach>()); }
|
||||
void SelectRoyalRaceway() { gWorldInstance.SetCurrentTrack(std::make_shared<RoyalRaceway>()); }
|
||||
void SelectMooMooFarm() { gWorldInstance.SetCurrentTrack(std::make_shared<MooMooFarm>()); }
|
||||
void SelectToadsTurnpike() { gWorldInstance.SetCurrentTrack(std::make_shared<ToadsTurnpike>()); }
|
||||
void SelectKalimariDesert() { gWorldInstance.SetCurrentTrack(std::make_shared<KalimariDesert>()); }
|
||||
void SelectSherbetLand() { gWorldInstance.SetCurrentTrack(std::make_shared<SherbetLand>()); }
|
||||
void SelectRainbowRoad() { gWorldInstance.SetCurrentTrack(std::make_shared<RainbowRoad>()); }
|
||||
void SelectWarioStadium() { gWorldInstance.SetCurrentTrack(std::make_shared<WarioStadium>()); }
|
||||
void SelectBlockFort() { gWorldInstance.SetCurrentTrack(std::make_shared<BlockFort>()); }
|
||||
void SelectSkyscraper() { gWorldInstance.SetCurrentTrack(std::make_shared<Skyscraper>()); }
|
||||
void SelectDoubleDeck() { gWorldInstance.SetCurrentTrack(std::make_shared<DoubleDeck>()); }
|
||||
void SelectDkJungle() { gWorldInstance.SetCurrentTrack(std::make_shared<DKJungle>()); }
|
||||
void SelectBigDonut() { gWorldInstance.SetCurrentTrack(std::make_shared<BigDonut>()); }
|
||||
void SelectPodiumCeremony() { gWorldInstance.SetCurrentTrack(gPodiumCeremony); }
|
||||
void SelectMarioRaceway() { GetWorld()->SetCurrentTrack(std::make_shared<MarioRaceway>()); }
|
||||
void SelectLuigiRaceway() { GetWorld()->SetCurrentTrack(std::make_shared<LuigiRaceway>()); }
|
||||
void SelectChocoMountain() { GetWorld()->SetCurrentTrack(std::make_shared<ChocoMountain>()); }
|
||||
void SelectBowsersCastle() { GetWorld()->SetCurrentTrack(std::make_shared<BowsersCastle>()); }
|
||||
void SelectBansheeBoardwalk() { GetWorld()->SetCurrentTrack(std::make_shared<BansheeBoardwalk>()); }
|
||||
void SelectYoshiValley() { GetWorld()->SetCurrentTrack(std::make_shared<YoshiValley>()); }
|
||||
void SelectFrappeSnowland() { GetWorld()->SetCurrentTrack(std::make_shared<FrappeSnowland>()); }
|
||||
void SelectKoopaTroopaBeach() { GetWorld()->SetCurrentTrack(std::make_shared<KoopaTroopaBeach>()); }
|
||||
void SelectRoyalRaceway() { GetWorld()->SetCurrentTrack(std::make_shared<RoyalRaceway>()); }
|
||||
void SelectMooMooFarm() { GetWorld()->SetCurrentTrack(std::make_shared<MooMooFarm>()); }
|
||||
void SelectToadsTurnpike() { GetWorld()->SetCurrentTrack(std::make_shared<ToadsTurnpike>()); }
|
||||
void SelectKalimariDesert() { GetWorld()->SetCurrentTrack(std::make_shared<KalimariDesert>()); }
|
||||
void SelectSherbetLand() { GetWorld()->SetCurrentTrack(std::make_shared<SherbetLand>()); }
|
||||
void SelectRainbowRoad() { GetWorld()->SetCurrentTrack(std::make_shared<RainbowRoad>()); }
|
||||
void SelectWarioStadium() { GetWorld()->SetCurrentTrack(std::make_shared<WarioStadium>()); }
|
||||
void SelectBlockFort() { GetWorld()->SetCurrentTrack(std::make_shared<BlockFort>()); }
|
||||
void SelectSkyscraper() { GetWorld()->SetCurrentTrack(std::make_shared<Skyscraper>()); }
|
||||
void SelectDoubleDeck() { GetWorld()->SetCurrentTrack(std::make_shared<DoubleDeck>()); }
|
||||
void SelectDkJungle() { GetWorld()->SetCurrentTrack(std::make_shared<DKJungle>()); }
|
||||
void SelectBigDonut() { GetWorld()->SetCurrentTrack(std::make_shared<BigDonut>()); }
|
||||
void SelectPodiumCeremony() { GetWorld()->SetCurrentTrack(gPodiumCeremony); }
|
||||
// clang-format on
|
||||
|
||||
void* GetMushroomCup(void) {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ extern HarbourMastersIntro gMenuIntro;
|
|||
extern bool bCleanWorld;
|
||||
extern Registry<TrackInfo> gTrackRegistry;
|
||||
extern Registry<ActorInfo, const SpawnParams&> gActorRegistry;
|
||||
World* GetWorld(void);
|
||||
World* GetWorld(void); // Retrieve the world instance
|
||||
#endif
|
||||
// NOLINTBEGIN(readability-identifier-naming)
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ namespace Editor {
|
|||
|
||||
size_t id = 0; // id for now because we don't have unique names atm
|
||||
|
||||
for (const auto& actor : gWorldInstance.Actors) {
|
||||
for (const auto& actor : GetWorld()->Actors) {
|
||||
std::string name;
|
||||
if (nullptr != actor->Name && actor->Name[0] != '\0') {
|
||||
name = std::string(actor->Name);
|
||||
|
|
@ -51,7 +51,7 @@ namespace Editor {
|
|||
id += 1;
|
||||
}
|
||||
|
||||
for (const auto& object : gWorldInstance.Objects) {
|
||||
for (const auto& object : GetWorld()->Objects) {
|
||||
std::string name;
|
||||
if (nullptr != object->Name && object->Name[0] != '\0') {
|
||||
name = std::string(object->Name);
|
||||
|
|
|
|||
|
|
@ -35,19 +35,19 @@ namespace Editor {
|
|||
static char debugNameBuffer[256] = "m circuit";
|
||||
static char lengthBuffer[256] = "567m";
|
||||
|
||||
if (nullptr == gWorldInstance.GetTrack()) {
|
||||
if (nullptr == GetWorld()->GetTrack()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ImGui::InputText("ID", idBuffer, IM_ARRAYSIZE(idBuffer));
|
||||
ImGui::InputText("Name", gWorldInstance.GetTrack()->Props.Name, IM_ARRAYSIZE(nameBuffer));
|
||||
ImGui::InputText("Debug Name", gWorldInstance.GetTrack()->Props.DebugName, IM_ARRAYSIZE(debugNameBuffer));
|
||||
ImGui::InputText("Track Length", gWorldInstance.GetTrack()->Props.TrackLength, IM_ARRAYSIZE(lengthBuffer));
|
||||
ImGui::InputFloat("Water Level", &gWorldInstance.GetTrack()->Props.WaterLevel);
|
||||
ImGui::InputText("Name", GetWorld()->GetTrack()->Props.Name, IM_ARRAYSIZE(nameBuffer));
|
||||
ImGui::InputText("Debug Name", GetWorld()->GetTrack()->Props.DebugName, IM_ARRAYSIZE(debugNameBuffer));
|
||||
ImGui::InputText("Track Length", GetWorld()->GetTrack()->Props.TrackLength, IM_ARRAYSIZE(lengthBuffer));
|
||||
ImGui::InputFloat("Water Level", &GetWorld()->GetTrack()->Props.WaterLevel);
|
||||
|
||||
if (ImGui::CollapsingHeader("Camera")) {
|
||||
ImGui::InputFloat("Near Perspective", &gWorldInstance.GetTrack()->Props.NearPersp);
|
||||
ImGui::InputFloat("Far Perspective", &gWorldInstance.GetTrack()->Props.FarPersp);
|
||||
ImGui::InputFloat("Near Perspective", &GetWorld()->GetTrack()->Props.NearPersp);
|
||||
ImGui::InputFloat("Far Perspective", &GetWorld()->GetTrack()->Props.FarPersp);
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::BeginTooltip();
|
||||
ImGui::Text("Controls the far clipping distance for perspective rendering.");
|
||||
|
|
@ -62,92 +62,92 @@ namespace Editor {
|
|||
|
||||
if (ImGui::CollapsingHeader("AI")) {
|
||||
|
||||
ImGui::InputFloat("AI Max Separation", &gWorldInstance.GetTrack()->Props.AIMaximumSeparation);
|
||||
ImGui::InputFloat("AI Min Separation", &gWorldInstance.GetTrack()->Props.AIMinimumSeparation);
|
||||
ImGui::InputInt("AI Steering Sensitivity", (int*)&gWorldInstance.GetTrack()->Props.AISteeringSensitivity);
|
||||
ImGui::InputFloat("AI Max Separation", &GetWorld()->GetTrack()->Props.AIMaximumSeparation);
|
||||
ImGui::InputFloat("AI Min Separation", &GetWorld()->GetTrack()->Props.AIMinimumSeparation);
|
||||
ImGui::InputInt("AI Steering Sensitivity", (int*)&GetWorld()->GetTrack()->Props.AISteeringSensitivity);
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
for (size_t i = 0; i < 32; i++) {
|
||||
ImGui::InputScalar(("Element " + std::to_string(i)).c_str(), ImGuiDataType_S16, &gWorldInstance.GetTrack()->Props.AIDistance[i]);
|
||||
ImGui::InputScalar(("Element " + std::to_string(i)).c_str(), ImGuiDataType_S16, &GetWorld()->GetTrack()->Props.AIDistance[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::CollapsingHeader("Random Junk")) {
|
||||
for (size_t i = 0; i < 4; i++) {
|
||||
ImGui::InputFloat(fmt::format("CurveTargetSpeed[{}]", i).c_str(), &gWorldInstance.GetTrack()->Props.CurveTargetSpeed[i]);
|
||||
ImGui::InputFloat(fmt::format("CurveTargetSpeed[{}]", i).c_str(), &GetWorld()->GetTrack()->Props.CurveTargetSpeed[i]);
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
|
||||
for (size_t i = 0; i < 4; i++) {
|
||||
ImGui::InputFloat(fmt::format("NormalTargetSpeed[{}]", i).c_str(), &gWorldInstance.GetTrack()->Props.NormalTargetSpeed[i]);
|
||||
ImGui::InputFloat(fmt::format("NormalTargetSpeed[{}]", i).c_str(), &GetWorld()->GetTrack()->Props.NormalTargetSpeed[i]);
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
|
||||
for (size_t i = 0; i < 4; i++) {
|
||||
ImGui::InputFloat(fmt::format("D_0D0096B8[{}]", i).c_str(), &gWorldInstance.GetTrack()->Props.D_0D0096B8[i]);
|
||||
ImGui::InputFloat(fmt::format("D_0D0096B8[{}]", i).c_str(), &GetWorld()->GetTrack()->Props.D_0D0096B8[i]);
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
for (size_t i = 0; i < 4; i++) {
|
||||
ImGui::InputFloat(fmt::format("OffTrackTargetSpeed[{}]", i).c_str(), &gWorldInstance.GetTrack()->Props.OffTrackTargetSpeed[i]);
|
||||
ImGui::InputFloat(fmt::format("OffTrackTargetSpeed[{}]", i).c_str(), &GetWorld()->GetTrack()->Props.OffTrackTargetSpeed[i]);
|
||||
}
|
||||
}
|
||||
|
||||
float minimapColour[3];
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Minimap.Colour, minimapColour);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Minimap.Colour, minimapColour);
|
||||
|
||||
if (ImGui::CollapsingHeader("Minimap")) {
|
||||
ImGui::Text("Position");
|
||||
ImGui::SameLine();
|
||||
|
||||
|
||||
if (ImGui::DragInt2("##MinimapPosition", &gWorldInstance.GetTrack()->Props.Minimap.Pos[0].X, 1.0f)) {
|
||||
if (ImGui::DragInt2("##MinimapPosition", &GetWorld()->GetTrack()->Props.Minimap.Pos[0].X, 1.0f)) {
|
||||
}
|
||||
ImGui::Text("P2 Position");
|
||||
ImGui::SameLine();
|
||||
if (ImGui::DragInt2("##MinimapPosition2p", &gWorldInstance.GetTrack()->Props.Minimap.Pos[1].X, 1.0f)) {
|
||||
if (ImGui::DragInt2("##MinimapPosition2p", &GetWorld()->GetTrack()->Props.Minimap.Pos[1].X, 1.0f)) {
|
||||
}
|
||||
|
||||
ImGui::Text("Player Markers");
|
||||
ImGui::SameLine();
|
||||
if (ImGui::DragInt2("##MinimapPlayers", &gWorldInstance.GetTrack()->Props.Minimap.PlayerX, 1.0f)) {
|
||||
if (ImGui::DragInt2("##MinimapPlayers", &GetWorld()->GetTrack()->Props.Minimap.PlayerX, 1.0f)) {
|
||||
}
|
||||
|
||||
ImGui::Text("Player Scale Factor");
|
||||
ImGui::SameLine();
|
||||
if (ImGui::DragFloat("##MinimapScaleFactor", &gWorldInstance.GetTrack()->Props.Minimap.PlayerScaleFactor, 0.0001f)) {
|
||||
if (ImGui::DragFloat("##MinimapScaleFactor", &GetWorld()->GetTrack()->Props.Minimap.PlayerScaleFactor, 0.0001f)) {
|
||||
}
|
||||
|
||||
ImGui::Text("Finishline");
|
||||
ImGui::SameLine();
|
||||
ImGui::DragFloat2("##MinimapFinishlineX", &gWorldInstance.GetTrack()->Props.Minimap.FinishlineX, 1.0f);
|
||||
ImGui::DragFloat2("##MinimapFinishlineX", &GetWorld()->GetTrack()->Props.Minimap.FinishlineX, 1.0f);
|
||||
|
||||
ImGui::Text("Colour");
|
||||
ImGui::SameLine();
|
||||
ImGui::ColorEdit3("##MinimapColour", minimapColour, 1.0f);
|
||||
}
|
||||
|
||||
FloatToRGB8(minimapColour, (u8*)&gWorldInstance.GetTrack()->Props.Minimap.Colour);
|
||||
FloatToRGB8(minimapColour, (u8*)&GetWorld()->GetTrack()->Props.Minimap.Colour);
|
||||
|
||||
// Convert and pass to ImGui ColorEdit3
|
||||
float topRight[3], bottomRight[3], bottomLeft[3], topLeft[3];
|
||||
float floorTopRight[3], floorBottomRight[3], floorBottomLeft[3], floorTopLeft[3];
|
||||
|
||||
// Convert RGB8 (0-255) to float (0.0f to 1.0f)
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.TopRight, topRight);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.BottomRight, bottomRight);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.BottomLeft, bottomLeft);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.TopLeft, topLeft);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorTopRight, floorTopRight);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorBottomRight, floorBottomRight);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorBottomLeft, floorBottomLeft);
|
||||
RGB8ToFloat((u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorTopLeft, floorTopLeft);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.TopRight, topRight);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.BottomRight, bottomRight);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.BottomLeft, bottomLeft);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.TopLeft, topLeft);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorTopRight, floorTopRight);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorBottomRight, floorBottomRight);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorBottomLeft, floorBottomLeft);
|
||||
RGB8ToFloat((u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorTopLeft, floorTopLeft);
|
||||
|
||||
if (ImGui::CollapsingHeader("Skybox")) {
|
||||
ImGui::ColorEdit3("Skybox Top Right", topRight);
|
||||
|
|
@ -161,14 +161,14 @@ namespace Editor {
|
|||
}
|
||||
|
||||
// Convert the modified float values back to RGB8 (0-255)
|
||||
FloatToRGB8(topRight, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.TopRight);
|
||||
FloatToRGB8(bottomRight, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.BottomRight);
|
||||
FloatToRGB8(bottomLeft, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.BottomLeft);
|
||||
FloatToRGB8(topLeft, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.TopLeft);
|
||||
FloatToRGB8(floorTopRight, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorTopRight);
|
||||
FloatToRGB8(floorBottomRight, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorBottomRight);
|
||||
FloatToRGB8(floorBottomLeft, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorBottomLeft);
|
||||
FloatToRGB8(floorTopLeft, (u8*)&gWorldInstance.GetTrack()->Props.Skybox.FloorTopLeft);
|
||||
FloatToRGB8(topRight, (u8*)&GetWorld()->GetTrack()->Props.Skybox.TopRight);
|
||||
FloatToRGB8(bottomRight, (u8*)&GetWorld()->GetTrack()->Props.Skybox.BottomRight);
|
||||
FloatToRGB8(bottomLeft, (u8*)&GetWorld()->GetTrack()->Props.Skybox.BottomLeft);
|
||||
FloatToRGB8(topLeft, (u8*)&GetWorld()->GetTrack()->Props.Skybox.TopLeft);
|
||||
FloatToRGB8(floorTopRight, (u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorTopRight);
|
||||
FloatToRGB8(floorBottomRight, (u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorBottomRight);
|
||||
FloatToRGB8(floorBottomLeft, (u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorBottomLeft);
|
||||
FloatToRGB8(floorTopLeft, (u8*)&GetWorld()->GetTrack()->Props.Skybox.FloorTopLeft);
|
||||
|
||||
TrackPropertiesWindow::DrawMusic();
|
||||
TrackPropertiesWindow::DrawTourCamera();
|
||||
|
|
@ -185,15 +185,15 @@ namespace Editor {
|
|||
"Royal Raceway", "Yoshi Valley", "Block Fort", "Double Deck"
|
||||
};
|
||||
|
||||
const char* currentItem = MusicSeqToString(gWorldInstance.GetTrack()->Props.Sequence); // Get the current selected value's string
|
||||
const char* currentItem = MusicSeqToString(GetWorld()->GetTrack()->Props.Sequence); // Get the current selected value's string
|
||||
|
||||
if (ImGui::BeginCombo("Music Sequence", currentItem)) {
|
||||
for (size_t i = 0; i < IM_ARRAYSIZE(items); ++i) {
|
||||
bool isSelected = (currentItem == items[i]);
|
||||
if (ImGui::Selectable(items[i], isSelected)) {
|
||||
// Update the sequence when an option is selected
|
||||
gWorldInstance.GetTrack()->Props.Sequence = static_cast<MusicSeq>(i);
|
||||
play_sequence(gWorldInstance.GetTrack()->Props.Sequence); // Call play_sequence with the updated sequence
|
||||
GetWorld()->GetTrack()->Props.Sequence = static_cast<MusicSeq>(i);
|
||||
play_sequence(GetWorld()->GetTrack()->Props.Sequence); // Call play_sequence with the updated sequence
|
||||
|
||||
// Update currentItem after selection is made
|
||||
currentItem = items[i];
|
||||
|
|
@ -299,7 +299,7 @@ namespace Editor {
|
|||
|
||||
void TrackPropertiesWindow::DrawTourCamera() {
|
||||
|
||||
std::shared_ptr<Track> track = gWorldInstance.GetTrack();
|
||||
std::shared_ptr<Track> track = GetWorld()->GetTrack();
|
||||
if (nullptr == track) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue