summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2025-11-23 13:18:51 -0700
committerGitHub <noreply@github.com>2025-11-23 13:18:51 -0700
commit96f02bd70f4f24ab3fa28d479ee0c7ff84928e33 (patch)
tree34d795856b2e2309271024fb770be9831ebd6fbd /src/engine
parent52554e21cc0b515c95cf8108ff6255703f5465e3 (diff)
Only Spawn Three ChainChomps for Rainbow Track (#569)
* Update RainbowRoad.cpp * Update ChainChomp.cpp * Decrement actor counters in destructor * Update Finishline.cpp
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/actors/Finishline.cpp1
-rw-r--r--src/engine/actors/Finishline.h4
-rw-r--r--src/engine/courses/RainbowRoad.cpp4
-rw-r--r--src/engine/objects/ChainChomp.cpp4
-rw-r--r--src/engine/objects/Crab.h3
-rw-r--r--src/engine/objects/Mole.h3
-rw-r--r--src/engine/objects/MoleGroup.h3
7 files changed, 15 insertions, 7 deletions
diff --git a/src/engine/actors/Finishline.cpp b/src/engine/actors/Finishline.cpp
index 4164b5f3b..52fa9c895 100644
--- a/src/engine/actors/Finishline.cpp
+++ b/src/engine/actors/Finishline.cpp
@@ -74,6 +74,7 @@ void AFinishline::Draw(Camera *camera) {
maxObjectsReached = render_set_position(mtx, 0) == 0;
if (maxObjectsReached) {
+ FrameInterpolation_RecordCloseChild();
return;
}
diff --git a/src/engine/actors/Finishline.h b/src/engine/actors/Finishline.h
index ec99b637f..b5f8c2dfd 100644
--- a/src/engine/actors/Finishline.h
+++ b/src/engine/actors/Finishline.h
@@ -20,7 +20,9 @@ public:
*/
AFinishline(const SpawnParams& params);
- virtual ~AFinishline() override = default;
+ ~AFinishline() {
+ _count--;
+ }
// This is simply a helper function to keep Spawning code clean
static inline AFinishline* Spawn(FVector pos, IRotator rot) {
diff --git a/src/engine/courses/RainbowRoad.cpp b/src/engine/courses/RainbowRoad.cpp
index f2f99b488..bfc64e976 100644
--- a/src/engine/courses/RainbowRoad.cpp
+++ b/src/engine/courses/RainbowRoad.cpp
@@ -149,10 +149,6 @@ void RainbowRoad::BeginPlay() {
gWorldInstance.AddObject(new OChainChomp());
gWorldInstance.AddObject(new OChainChomp());
gWorldInstance.AddObject(new OChainChomp());
- gWorldInstance.AddObject(new OChainChomp());
- gWorldInstance.AddObject(new OChainChomp());
- gWorldInstance.AddObject(new OChainChomp());
- gWorldInstance.AddObject(new OChainChomp());
}
if (gModeSelection == VERSUS) {
diff --git a/src/engine/objects/ChainChomp.cpp b/src/engine/objects/ChainChomp.cpp
index fd3faa622..9f750831b 100644
--- a/src/engine/objects/ChainChomp.cpp
+++ b/src/engine/objects/ChainChomp.cpp
@@ -20,8 +20,8 @@ OChainChomp::OChainChomp() {
Name = "Chain Chomp";
ResourceName = "mk:chain_chomp";
_idx = _count;
- init_object(indexObjectList2[_count], 0);
- _objectIndex = indexObjectList2[_count];
+ init_object(indexObjectList2[_idx], 0);
+ _objectIndex = indexObjectList2[_idx];
_count++;
}
diff --git a/src/engine/objects/Crab.h b/src/engine/objects/Crab.h
index d2c694ff1..08056f114 100644
--- a/src/engine/objects/Crab.h
+++ b/src/engine/objects/Crab.h
@@ -41,6 +41,9 @@ public:
}
explicit OCrab(const SpawnParams& params);
+ ~OCrab() {
+ _count--;
+ }
virtual void Tick() override;
virtual void Draw(s32 cameraId) override;
diff --git a/src/engine/objects/Mole.h b/src/engine/objects/Mole.h
index 1457c72cc..da3a151a2 100644
--- a/src/engine/objects/Mole.h
+++ b/src/engine/objects/Mole.h
@@ -22,6 +22,9 @@ class OMoleGroup;
class OMole : public OObject {
public:
explicit OMole(FVector pos, OMoleGroup* group);
+ ~OMole() {
+ _count--;
+ }
virtual void Tick() override;
virtual void Draw(s32 cameraId) override;
diff --git a/src/engine/objects/MoleGroup.h b/src/engine/objects/MoleGroup.h
index 31d9c2819..901f3c2f5 100644
--- a/src/engine/objects/MoleGroup.h
+++ b/src/engine/objects/MoleGroup.h
@@ -22,6 +22,9 @@ public:
* The mole must also be ready to jump to be considered.
*/
explicit OMoleGroup(std::vector<FVector>& moles, size_t tickRate);
+ ~OMoleGroup() {
+ _count--;
+ }
virtual void Tick() override;