Skip to content

Commit bbc96bd

Browse files
authored
CTargetReticles 99% (#52)
1 parent 7a37b02 commit bbc96bd

File tree

12 files changed

+1846
-25
lines changed

12 files changed

+1846
-25
lines changed

config/GM8E01_00/symbols.txt

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5658,7 +5658,7 @@ CheckLoadComplete__17COrbitPointMarkerFv = .text:0x800BC900; // type:function si
56585658
__ct__17COrbitPointMarkerFv = .text:0x800BC974; // type:function size:0xCC scope:global
56595659
Touch__17CTargetingManagerCFv = .text:0x800BCA40; // type:function size:0x20 scope:global
56605660
Touch__22CCompoundTargetReticleCFv = .text:0x800BCA60; // type:function size:0x16C scope:global
5661-
Draw__17CTargetingManagerCFRC13CStateManager = .text:0x800BCBCC; // type:function size:0x198 scope:global
5661+
Draw__17CTargetingManagerCFRC13CStateManagerb = .text:0x800BCBCC; // type:function size:0x198 scope:global
56625662
Update__17CTargetingManagerFfRC13CStateManager = .text:0x800BCD64; // type:function size:0x54 scope:global
56635663
CheckLoadComplete__17CTargetingManagerFv = .text:0x800BCDB8; // type:function size:0x58 scope:global
56645664
__ct__17CTargetingManagerFRC13CStateManager = .text:0x800BCE10; // type:function size:0x38 scope:global
@@ -5673,9 +5673,9 @@ UpdateTargetParameters__22CCompoundTargetReticleFR25CTargetReticleRenderStateRC1
56735673
DrawOrbitZoneGroup__22CCompoundTargetReticleCFRC9CMatrix3fRC13CStateManager = .text:0x800BD69C; // type:function size:0x16C scope:global
56745674
DrawNextLockOnGroup__22CCompoundTargetReticleCFRC9CMatrix3fRC13CStateManager = .text:0x800BD808; // type:function size:0xA54 scope:global
56755675
DrawCurrLockOnGroup__22CCompoundTargetReticleCFRC9CMatrix3fRC13CStateManager = .text:0x800BE25C; // type:function size:0x15F8 scope:global
5676-
DrawGrapplePoint__22CCompoundTargetReticleFRC19CScriptGrapplePointRC13CStateManagerRC9CMatrix3fb = .text:0x800BF854; // type:function size:0x1A8 scope:global
5677-
DrawGrappleGroup__22CCompoundTargetReticleCFRC9CMatrix3fRC13CStateManager = .text:0x800BF9FC; // type:function size:0x258 scope:global
5678-
Draw__22CCompoundTargetReticleCFRC13CStateManager = .text:0x800BFC54; // type:function size:0x10C scope:global
5676+
DrawGrapplePoint__22CCompoundTargetReticleFRC19CScriptGrapplePointfRC13CStateManagerRC9CMatrix3fb = .text:0x800BF854; // type:function size:0x1A8 scope:global
5677+
DrawGrappleGroup__22CCompoundTargetReticleCFRC9CMatrix3fRC13CStateManagerb = .text:0x800BF9FC; // type:function size:0x258 scope:global
5678+
Draw__22CCompoundTargetReticleCFRC13CStateManagerb = .text:0x800BFC54; // type:function size:0x10C scope:global
56795679
UpdateOrbitZoneGroup__22CCompoundTargetReticleFfRC13CStateManager = .text:0x800BFD60; // type:function size:0x124 scope:global
56805680
UpdateNextLockOnGroup__22CCompoundTargetReticleFfRC13CStateManager = .text:0x800BFE84; // type:function size:0x36C scope:global
56815681
UpdateCurrLockOnGroup__22CCompoundTargetReticleFfRC13CStateManager = .text:0x800C01F0; // type:function size:0x6E8 scope:global
@@ -5684,9 +5684,9 @@ GetDesiredReticleState__22CCompoundTargetReticleCFRC13CStateManager = .text:0x80
56845684
CheckLoadComplete__22CCompoundTargetReticleFv = .text:0x800C1324; // type:function size:0x8 scope:global
56855685
__ct__22CCompoundTargetReticleFRC13CStateManager = .text:0x800C132C; // type:function size:0x73C scope:global
56865686
__ct__Q222CCompoundTargetReticle14SOuterItemInfoFPCc = .text:0x800C1A68; // type:function size:0x7C scope:global
5687-
calculate_premultiplied_overshoot_offset__Ff = .text:0x800C1AE4; // type:function size:0x3C scope:global
5688-
offshoot_func__Ffff = .text:0x800C1B20; // type:function size:0x48 scope:global
5689-
IsDamageOrbit__FQ27CPlayer16EOrbitBrokenType = .text:0x800C1B68; // type:function size:0x2C scope:global
5687+
calculate_premultiplied_overshoot_offset__Ff = .text:0x800C1AE4; // type:function size:0x3C scope:local
5688+
offshoot_func__Ffff = .text:0x800C1B20; // type:function size:0x48 scope:local
5689+
IsDamageOrbit__FQ27CPlayer16EOrbitBrokenType = .text:0x800C1B68; // type:function size:0x2C scope:local
56905690
reserve__Q24rstl77vector<Q222CCompoundTargetReticle14SOuterItemInfo,Q24rstl17rmemory_allocator>Fi = .text:0x800C1B94; // type:function size:0x12C scope:global
56915691
__sinit_CTargetReticles_cpp = .text:0x800C1CC0; // type:function size:0x68 scope:local
56925692
GetNumActive__10CWeaponMgrCF9TUniqueId11EWeaponType = .text:0x800C1D28; // type:function size:0xC0 scope:global
@@ -16959,9 +16959,23 @@ lbl_803CDE80 = .rodata:0x803CDE80; // type:object size:0x7 data:string
1695916959
lbl_803CDEA0 = .rodata:0x803CDEA0; // type:object size:0x20
1696016960
@138 = .rodata:0x803CDEC0; // type:object size:0x14 scope:local data:4byte
1696116961
@213 = .rodata:0x803CDED4; // type:object size:0x14 scope:local data:4byte
16962-
lbl_803CDEE8 = .rodata:0x803CDEE8; // type:object size:0x110
16963-
lbl_803CDFF8 = .rodata:0x803CDFF8; // type:object size:0x10 data:string
16964-
lbl_803CE008 = .rodata:0x803CE008; // type:object size:0x10
16962+
skCrosshairsReticleAssetName = .rodata:0x803CDEE8; // type:object size:0x10 scope:local data:string
16963+
skOrbitZoneReticleAssetName = .rodata:0x803CDEF8; // type:object size:0xF scope:local data:string
16964+
skSeekerAssetName = .rodata:0x803CDF08; // type:object size:0xC scope:local data:string
16965+
skLockConfirmAssetName = .rodata:0x803CDF14; // type:object size:0x11 scope:local data:string
16966+
skTargetFlowerAssetName = .rodata:0x803CDF28; // type:object size:0x12 scope:local data:string
16967+
skMissileBracketAssetName = .rodata:0x803CDF3C; // type:object size:0x14 scope:local data:string
16968+
skChargeGaugeAssetName = .rodata:0x803CDF50; // type:object size:0x11 scope:local data:string
16969+
skChargeBeamTickAssetName = .rodata:0x803CDF64; // type:object size:0x15 scope:local data:string
16970+
skOuterBeamIconSquareNameBase = .rodata:0x803CDF7C; // type:object size:0x10 scope:local data:string
16971+
skInnerBeamIconName = .rodata:0x803CDF8C; // type:object size:0x13 scope:local data:string
16972+
skLockFireAssetName = .rodata:0x803CDFA0; // type:object size:0xE scope:local data:string
16973+
skLockDaggerAssetName = .rodata:0x803CDFB0; // type:object size:0x11 scope:local data:string
16974+
skGrappleReticleAssetName = .rodata:0x803CDFC4; // type:object size:0xD scope:local data:string
16975+
skXRayRingModelName = .rodata:0x803CDFD4; // type:object size:0x11 scope:local data:string
16976+
skThermalReticleAssetName = .rodata:0x803CDFE8; // type:object size:0x10 scope:local data:string
16977+
skOrbitPointAssetName = .rodata:0x803CDFF8; // type:object size:0x10 scope:local data:string
16978+
@stringBase0 = .rodata:0x803CE008; // type:object size:0xC scope:local data:string_table
1696516979
lbl_803CE018 = .rodata:0x803CE018; // type:object size:0x7 data:string
1696616980
@stringBase0 = .rodata:0x803CE020; // type:object size:0x4F scope:local data:string_table
1696716981
@1144 = .rodata:0x803CE070; // type:object size:0xC scope:local data:4byte
@@ -19276,7 +19290,7 @@ MinesPostTransforms = .bss:0x8046C3E0; // type:object size:0x24 scope:local alig
1927619290
kLineOfSightFilter = .bss:0x8046C408; // type:object size:0x18 scope:local data:4byte
1927719291
lbl_8046C420 = .bss:0x8046C420; // type:object size:0x18 data:4byte
1927819292
lbl_8046C438 = .bss:0x8046C438; // type:object size:0x18 data:4byte
19279-
lbl_8046C450 = .bss:0x8046C450; // type:object size:0x20 data:2byte
19293+
skZeroRenderState = .bss:0x8046C450; // type:object size:0x20 scope:local data:2byte
1928019294
lbl_8046C470 = .bss:0x8046C470; // type:object size:0xC align:4 data:float
1928119295
lbl_8046C47C = .bss:0x8046C47C; // type:object size:0xC align:4 data:float
1928219296
@401 = .bss:0x8046C488; // type:object size:0xC scope:local
@@ -23301,7 +23315,7 @@ lbl_805AAAC8 = .sdata2:0x805AAAC8; // type:object size:0x4 align:4 data:float
2330123315
lbl_805AAACC = .sdata2:0x805AAACC; // type:object size:0x4 align:4 data:float
2330223316
lbl_805AAAD0 = .sdata2:0x805AAAD0; // type:object size:0x4 align:4 data:float
2330323317
lbl_805AAAD4 = .sdata2:0x805AAAD4; // type:object size:0x4 align:4 data:float
23304-
lbl_805AAAD8 = .sdata2:0x805AAAD8; // type:object size:0x4 align:4 data:float
23318+
gkEpsilon = .sdata2:0x805AAAD8; // type:object size:0x4 scope:local align:4 data:float
2330523319
lbl_805AAADC = .sdata2:0x805AAADC; // type:object size:0x4 align:4 data:float
2330623320
lbl_805AAAE0 = .sdata2:0x805AAAE0; // type:object size:0x4 align:4 data:float
2330723321
lbl_805AAAE4 = .sdata2:0x805AAAE4; // type:object size:0x4 align:4 data:float

include/Kyoto/Graphics/CModelFlags.hpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,7 @@ class CModelFlags {
7878
return CModelFlags(*this, GetOtherFlags() | kF_NoTextureLock);
7979
}
8080
CModelFlags DepthCompareUpdate(const bool compare, const bool update) const {
81-
uint newFlags = 0;
82-
if (compare) {
83-
newFlags |= kF_DepthCompare;
84-
}
85-
if (update) {
86-
newFlags |= kF_DepthUpdate;
87-
}
81+
uint newFlags = static_cast< uint >(compare) | (static_cast< uint >(update) << 1);
8882
return CModelFlags(*this, (x2_flags & ~(kF_DepthCompare | kF_DepthUpdate)) | newFlags);
8983
}
9084
CModelFlags DepthBackwards() const {

include/Kyoto/Math/CAbsAngle.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include "Kyoto/Math/CMath.hpp"
77

8+
class CRelAngle;
9+
810
class CAbsAngle {
911
public:
1012
float AsDegrees() const { return x0_angle * (180.f / M_PIF); }
@@ -29,8 +31,8 @@ class CAbsAngle {
2931
return *this;
3032
}
3133

32-
// __apl__9CAbsAngleFRC9CRelAngle
33-
// __ami__9CAbsAngleFRC9CRelAngle
34+
CAbsAngle& operator+=(const CRelAngle& v);
35+
CAbsAngle& operator-=(const CRelAngle& v);
3436

3537
static CAbsAngle FromDegrees(float deg) {
3638
return CAbsAngle(CMath::ClampRadians(deg * (M_PIF / 180.f)));

include/Kyoto/Math/CMatrix3f.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ class CMatrix3f {
8484
}
8585
}
8686

87+
static inline CMatrix3f Scale(float s) {
88+
return CMatrix3f(s, 0.f, 0.f, 0.f, s, 0.f, 0.f, 0.f, s);
89+
}
90+
8791
static CMatrix3f FromTransform(const CTransform4f& xf);
8892

8993
private:

include/Kyoto/Math/CQuaternion.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class CQuaternion {
4242
// IsValidQuaternion__11CQuaternionCFf
4343
static CQuaternion Slerp(const CQuaternion& a, const CQuaternion& b, float t);
4444
static CQuaternion SlerpLocal(const CQuaternion& from, const CQuaternion& to, float t);
45-
// AngleFrom__11CQuaternionCFRC11CQuaternion
45+
CRelAngle AngleFrom(const CQuaternion& other) const;
4646
CQuaternion BuildEquivalent() const;
4747
// BuildNormalized__11CQuaternionCFv
4848
static CQuaternion AxisAngle(const CUnitVector3f&, const CRelAngle&);
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
#ifndef _CTARGETRETICLES
2+
#define _CTARGETRETICLES
3+
4+
#include "types.h"
5+
6+
#include "MetroidPrime/TGameTypes.hpp"
7+
#include "MetroidPrime/Player/CPlayerState.hpp"
8+
9+
#include "Kyoto/Math/CQuaternion.hpp"
10+
#include "Kyoto/Math/CVector3f.hpp"
11+
#include "Kyoto/TToken.hpp"
12+
13+
#include "rstl/vector.hpp"
14+
15+
class CActor;
16+
class CMatrix3f;
17+
class CModel;
18+
class CScriptGrapplePoint;
19+
class CStateManager;
20+
21+
enum EReticleState {
22+
kRS_Combat,
23+
kRS_Scan,
24+
kRS_XRay,
25+
kRS_Thermal,
26+
kRS_Four,
27+
kRS_Unspecified,
28+
};
29+
30+
class CTargetReticleRenderState {
31+
public:
32+
CTargetReticleRenderState(TUniqueId target, float radiusWorld, CVector3f positionWorld,
33+
float factor, float minVpClampScale, bool orbitZoneIdlePosition);
34+
35+
static void InterpolateWithClamp(const CTargetReticleRenderState& a,
36+
CTargetReticleRenderState& out,
37+
const CTargetReticleRenderState& b, float t);
38+
39+
void SetTargetId(TUniqueId id) { x0_target = id; }
40+
void SetFactor(float factor) { x14_factor = factor; }
41+
void SetIsOrbitZoneIdlePosition(bool orbit) { x1c_orbitZoneIdlePosition = orbit; }
42+
void SetRadiusWorld(float radius) { x4_radiusWorld = radius; }
43+
void SetTargetPositionWorld(const CVector3f& position) { x8_positionWorld = position; }
44+
void SetMinViewportClampScale(float scale) { x18_minVpClampScale = scale; }
45+
46+
TUniqueId GetTargetId() const { return x0_target; }
47+
float GetRadiusWorld() const { return x4_radiusWorld; }
48+
const CVector3f& GetTargetPositionWorld() const { return x8_positionWorld; }
49+
float GetFactor() const { return x14_factor; }
50+
float GetMinViewportClampScale() const { return x18_minVpClampScale; }
51+
bool GetIsOrbitZoneIdlePosition() const { return x1c_orbitZoneIdlePosition; }
52+
53+
private:
54+
TUniqueId x0_target;
55+
float x4_radiusWorld;
56+
CVector3f x8_positionWorld;
57+
float x14_factor;
58+
float x18_minVpClampScale;
59+
bool x1c_orbitZoneIdlePosition;
60+
};
61+
62+
CHECK_SIZEOF(CTargetReticleRenderState, 0x20)
63+
64+
class CCompoundTargetReticle {
65+
public:
66+
struct SOuterItemInfo {
67+
TCachedToken< CModel > x0_model;
68+
float xc_offshootBaseAngle;
69+
float x10_rotAng;
70+
float x14_baseAngle;
71+
float x18_offshootAngleDelta;
72+
73+
explicit SOuterItemInfo(const char* modelName);
74+
};
75+
76+
explicit CCompoundTargetReticle(const CStateManager& mgr);
77+
~CCompoundTargetReticle();
78+
79+
void SetLeadingOrientation(const CQuaternion& o) { x0_leadingOrientation = o; }
80+
bool CheckLoadComplete();
81+
EReticleState GetDesiredReticleState(const CStateManager& mgr) const;
82+
void Update(float dt, const CStateManager& mgr);
83+
void UpdateCurrLockOnGroup(float dt, const CStateManager& mgr);
84+
void UpdateNextLockOnGroup(float dt, const CStateManager& mgr);
85+
void UpdateOrbitZoneGroup(float dt, const CStateManager& mgr);
86+
void Draw(const CStateManager& mgr, bool hideLockon) const;
87+
void DrawGrappleGroup(const CMatrix3f& rot, const CStateManager& mgr, bool hideLockon) const;
88+
void DrawGrapplePoint(const CScriptGrapplePoint& point, float t, const CStateManager& mgr,
89+
const CMatrix3f& rot, bool zEqual) const;
90+
void DrawCurrLockOnGroup(const CMatrix3f& rot, const CStateManager& mgr) const;
91+
void DrawNextLockOnGroup(const CMatrix3f& rot, const CStateManager& mgr) const;
92+
void DrawOrbitZoneGroup(const CMatrix3f& rot, const CStateManager& mgr) const;
93+
void UpdateTargetParameters(CTargetReticleRenderState& state, const CStateManager& mgr);
94+
float CalculateRadiusWorld(const CActor& actor, const CStateManager& mgr) const;
95+
CVector3f CalculatePositionWorld(const CActor& actor, const CStateManager& mgr) const;
96+
CVector3f CalculateOrbitZoneReticlePosition(const CStateManager& mgr, bool lag) const;
97+
static bool IsGrappleTarget(TUniqueId id, const CStateManager& mgr);
98+
static float CalculateClampedScale(CVector3f pos, float scale, float clampMin,
99+
float clampMax, const CStateManager& mgr);
100+
void Touch() const;
101+
102+
TUniqueId GetTargetId() const { return xf0_targetId; }
103+
TUniqueId GetNextTargetId() const { return xf2_nextTargetId; }
104+
const CTargetReticleRenderState& GetCurrGroupInterp() const { return x10c_currGroupInterp; }
105+
const CTargetReticleRenderState& GetNextGroupInterp() const { return x174_nextGroupInterp; }
106+
bool GetIsOrbitZoneIdlePosition() const { return x10c_currGroupInterp.GetIsOrbitZoneIdlePosition(); }
107+
108+
private:
109+
CQuaternion x0_leadingOrientation;
110+
CQuaternion x10_laggingOrientation;
111+
EReticleState x20_prevState;
112+
EReticleState x24_nextState;
113+
mutable int x28_noDrawTicks;
114+
float x2c_overshootOffsetHalf;
115+
float x30_premultOvershootOffset;
116+
TCachedToken< CModel > x34_crosshairs;
117+
TCachedToken< CModel > x40_seeker;
118+
TCachedToken< CModel > x4c_lockConfirm;
119+
TCachedToken< CModel > x58_targetFlower;
120+
TCachedToken< CModel > x64_missileBracket;
121+
TCachedToken< CModel > x70_innerBeamIcon;
122+
TCachedToken< CModel > x7c_lockFire;
123+
TCachedToken< CModel > x88_lockDagger;
124+
TCachedToken< CModel > x94_grapple;
125+
TCachedToken< CModel > xa0_chargeTickFirst;
126+
TCachedToken< CModel > xac_xrayRetRing;
127+
TCachedToken< CModel > xb8_thermalReticle;
128+
SOuterItemInfo xc4_chargeGauge;
129+
rstl::vector< SOuterItemInfo > xe0_outerBeamIconSquares;
130+
TUniqueId xf0_targetId;
131+
TUniqueId xf2_nextTargetId;
132+
CVector3f xf4_targetPos;
133+
CVector3f x100_laggingTargetPos;
134+
CTargetReticleRenderState x10c_currGroupInterp;
135+
CTargetReticleRenderState x12c_currGroupA;
136+
CTargetReticleRenderState x14c_currGroupB;
137+
float x16c_currGroupDur;
138+
float x170_currGroupTimer;
139+
CTargetReticleRenderState x174_nextGroupInterp;
140+
CTargetReticleRenderState x194_nextGroupA;
141+
CTargetReticleRenderState x1b4_nextGroupB;
142+
float x1d4_nextGroupDur;
143+
float x1d8_nextGroupTimer;
144+
TUniqueId x1dc_grapplePoint0;
145+
TUniqueId x1de_grapplePoint1;
146+
float x1e0_grapplePoint0T;
147+
float x1e4_grapplePoint1T;
148+
float x1e8_crosshairsScale;
149+
float x1ec_seekerAngle;
150+
float x1f0_xrayRetAngle;
151+
bool x1f4_missileActive;
152+
float x1f8_missileBracketTimer;
153+
float x1fc_missileBracketScaleTimer;
154+
CPlayerState::EBeamId x200_beam;
155+
float x204_chargeGaugeOvershootTimer;
156+
float x208_lockonTimer;
157+
float x20c_unk;
158+
float x210_lockFireTimer;
159+
float x214_fullChargeFadeTimer;
160+
bool x218_beamShot;
161+
bool x219_missileShot;
162+
bool x21a_fullyCharged;
163+
};
164+
165+
CHECK_SIZEOF(CCompoundTargetReticle, 0x21C)
166+
167+
class COrbitPointMarker {
168+
public:
169+
COrbitPointMarker();
170+
~COrbitPointMarker();
171+
172+
bool CheckLoadComplete();
173+
void Update(float dt, const CStateManager& mgr);
174+
void Draw(const CStateManager& mgr) const;
175+
void ResetInterpolationTimer(float time);
176+
bool IsInterpolating() const { return x20_interpTimer > 0.f; }
177+
178+
private:
179+
float x0_zOffset;
180+
bool x4_camRelZPos;
181+
float x8_lagAzimuth;
182+
float xc_azimuth;
183+
CVector3f x10_lagTargetPos;
184+
bool x1c_lastFreeOrbit;
185+
float x20_interpTimer;
186+
float x24_curTime;
187+
TCachedToken< CModel > x28_orbitPointModel;
188+
};
189+
190+
CHECK_SIZEOF(COrbitPointMarker, 0x34)
191+
192+
class CTargetingManager {
193+
public:
194+
explicit CTargetingManager(const CStateManager& mgr);
195+
196+
bool CheckLoadComplete();
197+
void Update(float dt, const CStateManager& mgr);
198+
void Draw(const CStateManager& mgr, bool hideLockon) const;
199+
void Touch() const;
200+
201+
CCompoundTargetReticle& CompoundTargetReticle() { return x0_targetReticle; }
202+
const CCompoundTargetReticle& GetCompoundTargetReticle() const { return x0_targetReticle; }
203+
204+
private:
205+
CCompoundTargetReticle x0_targetReticle;
206+
COrbitPointMarker x21c_orbitPointMarker;
207+
};
208+
209+
CHECK_SIZEOF(CTargetingManager, 0x250)
210+
211+
#endif // _CTARGETRETICLES

include/MetroidPrime/Cameras/CGameCamera.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class CGameCamera : public CActor {
3737
float GetFov() const { return x15c_currentFov; }
3838
void SetFov(float fov) { x15c_currentFov = fov; }
3939
float GetNearClipDistance() const { return x160_znear; }
40+
float GetFarClipDistance() const { return x164_zfar; }
4041
void InterpolateFOV(float start, float fov, float time, float delayTime);
4142
void UpdatePerspective(float dt);
4243
int GetControllerNumber() const { return x16c_controllerIdx; }

include/MetroidPrime/Player/CPlayer.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,11 @@ class CPlayer : public CPhysicsActor, public TOneStatic< CPlayer > {
370370
return x2b0_outOfWaterTicks == 2 ? GetCurrentSurfaceRestraint() : kSR_Water;
371371
}
372372

373+
EOrbitBrokenType GetOrbitBrokenType() const { return x30c_orbitBrokenType; }
373374
TUniqueId GetOrbitTargetId() const { return x310_orbitTargetId; }
374375
const CVector3f& GetOrbitPoint() const { return x314_orbitPoint; }
375376
TUniqueId GetOrbitNextTargetId() const { return x33c_orbitNextTargetId; }
377+
CVector3f GetHUDOrbitTargetPosition() const;
376378
TUniqueId GetAttachedActor() const { return x26c_attachedActor; }
377379
bool GetControlsFrozen() const { return x760_controlsFrozen; } // name?
378380
float GetDistanceUnderWater() const { return x828_distanceUnderWater; }
@@ -395,6 +397,7 @@ class CPlayer : public CPhysicsActor, public TOneStatic< CPlayer > {
395397
// CPlayer::GetFlipSpiderBallControlX() const weak
396398
float GetDeathTime() const { return x9f4_deathTime; } // name?
397399

400+
bool IsCrosshairsOpen() const { return x9c4_25_showCrosshairs; }
398401
bool IsInsideFluid() const { return x9c4_31_inWaterMovement; }
399402

400403
void Teleport(const CTransform4f& xf, CStateManager& mgr, const bool resetBallCam);

include/MetroidPrime/Player/CPlayerGun.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ class CPlayerGun : public TOneStatic< CPlayerGun > {
181181
uint GetSecondaryItemId() const { return x318_comboAmmoIdx; }
182182
int GetBombsPending() const { return x308_bombCount; }
183183
uint GetFiring() const { return x2ec_lastFireButtonStates; }
184+
EMissileMode GetMissileMode() const { return x31c_missileMode; }
184185
float GetHoloTransitionFactor() const { return x678_morph.GetTransitionFactor(); }
185186
TUniqueId GetPowerBombId() const { return x53a_powerBomb; }
186187

include/MetroidPrime/ScriptObjects/CScriptGrapplePoint.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class CScriptGrapplePoint : public CActor {
2020
void Think(float, CStateManager&);
2121
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
2222
void Accept(IVisitor&);
23+
24+
const CGrappleParameters& GetGrappleParameters() const { return x100_parameters; }
2325
};
2426

2527
#endif // _CSCRIPTGRAPPLEPOINT

0 commit comments

Comments
 (0)