diff options
| author | Elijah Thomas <42302100+elijah-thomas774@users.noreply.github.com> | 2026-05-28 14:32:52 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-28 14:32:52 -0400 |
| commit | 83f216dd37e56efddd1d19351836f3b03f074058 (patch) | |
| tree | 8da270877638838dd70054bf5cd5eadac74bc934 /src/toBeSorted/d_path.cpp | |
| parent | 45374694e7e33db110983312c3e2525a6993dc76 (diff) | |
| parent | 1b61a62a004ceb93a60eb4192ccbb6b601494d5c (diff) | |
Merge pull request #312 from elijah-thomas774/d_a_e_ks
dAcEKs_c
Diffstat (limited to 'src/toBeSorted/d_path.cpp')
| -rw-r--r-- | src/toBeSorted/d_path.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/toBeSorted/d_path.cpp b/src/toBeSorted/d_path.cpp index 43b2b896..d68856b0 100644 --- a/src/toBeSorted/d_path.cpp +++ b/src/toBeSorted/d_path.cpp @@ -517,7 +517,7 @@ s32 ActorOnRail_Ext::execute() { mSegmentDistance = 0.0f; if (checkFlag(0x1)) { ret = 3; - offFlag(0x40000000); + unsetFlag(0x40000000); mSpeed *= -1.0f; } break; @@ -545,7 +545,7 @@ s32 ActorOnRail_Ext::execute() { mSegmentDistance = segmentLength; if (checkFlag(0x1)) { ret = 3; - onFlag(0x40000000); + setFlag(0x40000000); mSpeed *= -1.0f; } break; @@ -589,13 +589,28 @@ s32 ActorOnRail_Ext::getNextPointIndex() const { return getNextPointIndex(mSegmentIndex); } +s32 ActorOnRail_Ext::getNextPointIndex2() const { + if (mSpeed >= 0.0f) { + return mSegmentIndex; + } + + if (mSegmentIndex + 1 < mPath.getNumPoints()) { + return mSegmentIndex + 1; + } + + if (mPath.isWrapping()) { + return 0; + } + + return mPath.getLastPointIdx(); +} + s32 ActorOnRail_Ext::getClosestXZPoint(const mVec3_c &pos) const { f32 max = EGG::Math<f32>::maxNumber(); s32 best = 0; mVec3_c c; for (s32 i = 0; i < mPath.getNumPoints(); i++) { - const Vec *point = mPath.getPoint(i); - c = *reinterpret_cast<const mVec3_c *>(point) - pos; + c = *getPoint(i) - pos; f32 dist = c.squareMagXZ(); if (max > dist) { best = i; |
