From b7a637abacee267bd5f121439919f997a03113d8 Mon Sep 17 00:00:00 2001 From: MegaMech <7255464+MegaMech@users.noreply.github.com> Date: Sun, 24 Nov 2024 15:38:57 -0700 Subject: [PATCH] Fix freecam for custom courses --- src/engine/courses/Course.cpp | 6 +++++- src/engine/courses/Course.h | 1 + src/engine/courses/TestCourse.cpp | 4 ++++ src/engine/courses/TestCourse.h | 1 + src/port/Game.cpp | 9 +++++++++ src/racing/render_courses.c | 6 ------ 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/engine/courses/Course.cpp b/src/engine/courses/Course.cpp index a3c107f1a..6cef03d6b 100644 --- a/src/engine/courses/Course.cpp +++ b/src/engine/courses/Course.cpp @@ -239,6 +239,10 @@ void Course::Collision() {} void Course::ScrollingTextures() {} void Course::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) {} -void Course::Destroy() { } +void Course::Destroy() {} + +bool Course::IsMod() { + return false; +} Course* currentCourse = nullptr; diff --git a/src/engine/courses/Course.h b/src/engine/courses/Course.h index 20fd553c0..3d3335854 100644 --- a/src/engine/courses/Course.h +++ b/src/engine/courses/Course.h @@ -114,6 +114,7 @@ public: virtual void ScrollingTextures(); virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection); virtual void Destroy(); + virtual bool IsMod(); private: void Init(); }; diff --git a/src/engine/courses/TestCourse.cpp b/src/engine/courses/TestCourse.cpp index 4a132c410..05f6c9ed2 100644 --- a/src/engine/courses/TestCourse.cpp +++ b/src/engine/courses/TestCourse.cpp @@ -340,3 +340,7 @@ void TestCourse::RenderCredits() { void TestCourse::Collision() {} void TestCourse::Destroy() { } + +bool TestCourse::IsMod() { + return true; +} \ No newline at end of file diff --git a/src/engine/courses/TestCourse.h b/src/engine/courses/TestCourse.h index 4f0e83b9c..8bcffb131 100644 --- a/src/engine/courses/TestCourse.h +++ b/src/engine/courses/TestCourse.h @@ -39,4 +39,5 @@ public: virtual void SpawnVehicles() override; virtual void UpdateVehicles() override; virtual void Destroy() override; + virtual bool IsMod() override; }; diff --git a/src/port/Game.cpp b/src/port/Game.cpp index ba3a68390..38595cb74 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -41,6 +41,7 @@ extern "C" { #include "audio/load.h" #include "audio/external.h" #include "networking/networking.h" +#include "render_courses.h" //#include "engine/wasm.h" } @@ -340,6 +341,14 @@ extern "C" { } void CourseManager_RenderCourse(struct UnkStruct_800DC5EC* arg0) { + if (gWorldInstance.CurrentCourse->IsMod() == false) { + if ((CVarGetInteger("gFreecam", 0) == true)) { + // Render credits courses + func_8029569C(); + return; + } + } + if (gWorldInstance.CurrentCourse) { gWorldInstance.CurrentCourse->Render(arg0); } diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index 5976041d7..589853167 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c @@ -1399,12 +1399,6 @@ void render_course(struct UnkStruct_800DC5EC* arg0) { return; } - if ((CVarGetInteger("gFreecam", 0) == true)) { - // Render credits courses - func_8029569C(); - return; - } - if (creditsRenderMode) { func_8029569C(); return;