New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ParentMovementMgr.h
Go to the documentation of this file.
1#pragma once
2
3#include <actor/UniqueID.h>
4#include <state/FStateMgr.h>
5#include <utility/Angle.h>
6#include <utility/Direction.h>
7
8#include <math/seadVector.h>
9
11{
13 cPos_CenterRotation = 1, // Pivotal Rotation
14 cPos_Screw = 2, // Bolt
15 cPos_Rail = 3, // Path
16 cPos_GoAndCome = 4, // Two Way
17 //
18 cPos_ScrewKinokoLift = 6, // Bolt Mushroom Lift
19 cPos_ScrewKinokoLift_NoScrew = 7, // Bolt Mushroom Lift - No Bolt
20 cPos_ShiftingPlatform = 8, // Shifting Rectangle Platform
21 cPos_Gyration = 9, // Spinning
22 cPos_FloorGyration = 10, // Rolling Hill
23 cPos_KinokoLift = 11, // Mushroom Lift
24};
25
32
34{
35public:
44 static_assert(sizeof(MovementProperties) == 0x14, "ParentMovementMgr::MovementProperties size mismatch");
45
58 static_assert(sizeof(PivotalRotationSettings) == 0x2C, "ParentMovementMgr::PivotalRotationSettings size mismatch");
59
60public:
61 // Address: 0x02849C40
63
64 /**
65 * @brief Links to movement controllers with the matching movement id and type mask.
66 * @warning Use linkPivotal or linkPivotal2 when using pivotal-rotation or else it will bug out.
67 * @par Address: 0x0284B6F4
68 */
69 void link(const sead::Vector3f& position, u32 type_mask, u8 movement_id);
70 // Address: 0x0284B8C4
71 void execute();
72 // Address: 0x0284A37C
74 /**
75 * @brief Links to movement controllers with the matching movement id and type mask.
76 * @note Cannot be used to make it gyroscopic.
77 * @par Address: 0x0284B824
78 */
79 void linkPivotal(const sead::Vector3f& position, u32 movement_mask, s8 movement_id, const sead::Vector3f& pivot_center = sead::Vector3f(0.0f, 0.0f, 0.0f), bool tilted = false, bool unk_8 = false, bool upside_down = false, bool movement_param = true);
80 // Address: 0x0284B7C8
82
85
86 const sead::Vector3f& getPosition() const
87 {
88 return mPosition;
89 }
90
92 {
93 return mParentActorID;
94 }
95
97 {
98 return mAngle;
99 }
100
102 {
103 return mMovementId;
104 }
105
107 {
108 return mTwoWayDistanceMultiplier;
109 }
110
112 {
113 return mFloorGyrationAngle;
114 }
115
117 {
118 return mBoltSpeed;
119 }
120
122 {
123 return mBoltDirection;
124 }
125
130
132 {
133 return mMovementProperties;
134 }
135
137 {
138 return mPivotalUpsideDown;
139 }
140
141 bool getPivotalTilted() const
142 {
143 return mPivotalTilted;
144 }
145
146 bool getPivotalUnknown() const
147 {
148 return mPivotalUnknown;
149 }
150
152 {
153 return mPivotalGyroscopic;
154 }
155
156 void setAngle(Angle angle)
157 {
158 mAngle = angle;
159 }
160
161 void setTwoWayDistanceMultiplier(f32 multiplier)
162 {
163 mTwoWayDistanceMultiplier = multiplier;
164 }
165
166 void setFloorGyrationAngle(Angle angle)
167 {
168 mFloorGyrationAngle = angle;
169 }
170
171 void setBoltSpeed(f32 speed)
172 {
173 mBoltSpeed = speed;
174 }
175
176 void setBoltDirection(DirType direction)
177 {
178 mBoltDirection = direction;
179 }
180
182 {
183 mRectPlatformInfo = info;
184 }
185
187 {
188 mMovementProperties = properties;
189 }
190
191 void setPivotalUpsideDown(bool pivotal_upside_down)
192 {
193 mPivotalUpsideDown = pivotal_upside_down;
194 }
195
196 void setPivotalTilted(bool pivotal_tilted)
197 {
198 mPivotalTilted = pivotal_tilted;
199 }
200
201 void setPivotalUnknown(bool pivotal_unknown)
202 {
203 mPivotalUnknown = pivotal_unknown;
204 }
205
206 void setPivotalGyroscopic(bool pivotal_gyroscopic)
207 {
208 mPivotalGyroscopic = pivotal_gyroscopic;
209 }
210
211private:
227 u8 _5c[0x74-0x5C];
253};
254static_assert(sizeof(ParentMovementMgr) == 0xF8, "ParentMovementMgr size mismatch");
ParentMovementType
Definition ParentMovementMgr.h:11
@ cPos_ShiftingPlatform
Definition ParentMovementMgr.h:20
@ cPos_Gyration
Definition ParentMovementMgr.h:21
@ cPos_Rail
Definition ParentMovementMgr.h:15
@ cPos_CenterRotation
Definition ParentMovementMgr.h:13
@ cPos_GoAndCome
Definition ParentMovementMgr.h:16
@ cPos_FloorGyration
Definition ParentMovementMgr.h:22
@ cPos_ScrewKinokoLift
Definition ParentMovementMgr.h:18
@ cPos_Screw
Definition ParentMovementMgr.h:14
@ cPos_ScrewKinokoLift_NoScrew
Definition ParentMovementMgr.h:19
@ cPos_None
Definition ParentMovementMgr.h:12
@ cPos_KinokoLift
Definition ParentMovementMgr.h:23
RectPlatformInfo
Definition ParentMovementMgr.h:27
@ cRectPlatformInfo_FollowBottom
Definition ParentMovementMgr.h:29
@ cRectPlatformInfo_FollowNone
Definition ParentMovementMgr.h:30
@ cRectPlatformInfo_FollowTop
Definition ParentMovementMgr.h:28
Definition ParentMovementMgr.h:34
void setTwoWayDistanceMultiplier(f32 multiplier)
Definition ParentMovementMgr.h:161
Angle mAngle
Definition ParentMovementMgr.h:224
bool mPivotalGyroscopic
Definition ParentMovementMgr.h:235
bool mPivotalTilted
Definition ParentMovementMgr.h:233
void linkPivotal2(PivotalRotationSettings pivot_settings)
u32 mTypeMask
Definition ParentMovementMgr.h:222
void linkPivotal(const sead::Vector3f &position, u32 movement_mask, s8 movement_id, const sead::Vector3f &pivot_center=sead::Vector3f(0.0f, 0.0f, 0.0f), bool tilted=false, bool unk_8=false, bool upside_down=false, bool movement_param=true)
Links to movement controllers with the matching movement id and type mask.
u32 _78
Definition ParentMovementMgr.h:229
u8 _54
Definition ParentMovementMgr.h:225
Angle getAngle() const
Definition ParentMovementMgr.h:96
const sead::Vector3f & getPosition() const
Definition ParentMovementMgr.h:86
void setBoltSpeed(f32 speed)
Definition ParentMovementMgr.h:171
void setPivotalUnknown(bool pivotal_unknown)
Definition ParentMovementMgr.h:201
sead::Vector3f mPivotCenter
Definition ParentMovementMgr.h:215
void setPivotalUpsideDown(bool pivotal_upside_down)
Definition ParentMovementMgr.h:191
DirType mBoltDirection
Definition ParentMovementMgr.h:239
u32 _a4
Definition ParentMovementMgr.h:244
u32 _a0
Definition ParentMovementMgr.h:243
u32 _44
Definition ParentMovementMgr.h:221
Angle mFloorGyrationAngle
Definition ParentMovementMgr.h:228
u8 _5c[0x74-0x5C]
Definition ParentMovementMgr.h:227
void setMovementProperties(const MovementProperties &properties)
Definition ParentMovementMgr.h:186
u32 _ac
Definition ParentMovementMgr.h:246
u32 _40
Definition ParentMovementMgr.h:220
void setAngle(Angle angle)
Definition ParentMovementMgr.h:156
u32 _a8
Definition ParentMovementMgr.h:245
u8 _89
Definition ParentMovementMgr.h:237
u32 _b0
Definition ParentMovementMgr.h:247
sead::Vector3f _18
Definition ParentMovementMgr.h:214
bool getPivotalUnknown() const
Definition ParentMovementMgr.h:146
bool mPivotalUnknown
Definition ParentMovementMgr.h:234
u32 _bc
Definition ParentMovementMgr.h:250
Angle getFloorGyrationAngle() const
Definition ParentMovementMgr.h:111
u32 _b4
Definition ParentMovementMgr.h:248
u8 _88
Definition ParentMovementMgr.h:236
u32 _7c
Definition ParentMovementMgr.h:230
void setPivotalGyroscopic(bool pivotal_gyroscopic)
Definition ParentMovementMgr.h:206
void link(const sead::Vector3f &position, u32 type_mask, u8 movement_id)
Links to movement controllers with the matching movement id and type mask.
void setBoltDirection(DirType direction)
Definition ParentMovementMgr.h:176
u32 _34
Definition ParentMovementMgr.h:217
bool getPivotalGyroscopic() const
Definition ParentMovementMgr.h:151
bool mPivotalUpsideDown
Definition ParentMovementMgr.h:232
MovementProperties mMovementProperties
Definition ParentMovementMgr.h:251
f32 mTwoWayDistanceMultiplier
Definition ParentMovementMgr.h:226
void setPivotalTilted(bool pivotal_tilted)
Definition ParentMovementMgr.h:196
f32 mBoltSpeed
Definition ParentMovementMgr.h:240
UniqueID mParentActorID
Definition ParentMovementMgr.h:218
UniqueID getParentActorID() const
Definition ParentMovementMgr.h:91
bool getPivotalTilted() const
Definition ParentMovementMgr.h:141
bool getPivotalUpsideDown() const
Definition ParentMovementMgr.h:136
u8 mMovementId
Definition ParentMovementMgr.h:223
sead::Vector3f _c
Definition ParentMovementMgr.h:213
void setRectPlatformInfo(RectPlatformInfo info)
Definition ParentMovementMgr.h:181
RectPlatformInfo getRectPlatformInfo() const
Definition ParentMovementMgr.h:126
u8 getMovementID() const
Definition ParentMovementMgr.h:101
f32 getBoltSpeed() const
Definition ParentMovementMgr.h:116
u32 _8c
Definition ParentMovementMgr.h:238
u32 _3c
Definition ParentMovementMgr.h:219
u32 getTypeMask(ParentMovementType type)
MovementProperties getMovementProperties() const
Definition ParentMovementMgr.h:131
DirType getBoltDirection() const
Definition ParentMovementMgr.h:121
DECLARE_STATE_ID(ParentMovementType, Search)
u32 _80
Definition ParentMovementMgr.h:231
RectPlatformInfo mRectPlatformInfo
Definition ParentMovementMgr.h:241
void setFloorGyrationAngle(Angle angle)
Definition ParentMovementMgr.h:166
u32 _30
Definition ParentMovementMgr.h:216
FStateMgr< ParentMovementMgr > mFStateMgr
Definition ParentMovementMgr.h:252
u32 _b8
Definition ParentMovementMgr.h:249
u32 _9c
Definition ParentMovementMgr.h:242
sead::Vector3f mPosition
Definition ParentMovementMgr.h:212
f32 getTwoWayDistanceMultiplier() const
Definition ParentMovementMgr.h:106
Definition ParentMovementMgr.h:37
u32 _8
Definition ParentMovementMgr.h:40
u32 _4
Definition ParentMovementMgr.h:39
f32 hill_distance_offset
Definition ParentMovementMgr.h:42
u32 _c
Definition ParentMovementMgr.h:41
u32 _0
Definition ParentMovementMgr.h:38
Definition ParentMovementMgr.h:47
sead::Vector3f position
Definition ParentMovementMgr.h:48
bool gyroscopic
Definition ParentMovementMgr.h:56
bool _21
Definition ParentMovementMgr.h:53
sead::Vector3f pivot_center
Definition ParentMovementMgr.h:51
bool upside_down
Definition ParentMovementMgr.h:54
u32 movement_mask
Definition ParentMovementMgr.h:49
u32 movement_param
Definition ParentMovementMgr.h:55
u8 movement_id
Definition ParentMovementMgr.h:50
bool tilted
Definition ParentMovementMgr.h:52