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/ActorUniqueID.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:
62
63 /**
64 * @brief Links to movement controllers with the matching movement id and type mask.
65 * @warning Use linkPivotal or linkPivotal2 when using pivotal-rotation or else it will bug out.
66 */
67 void link(const sead::Vector3f& position, u32 type_mask, u8 movement_id);
68 void execute();
70 /**
71 * @brief Links to movement controllers with the matching movement id and type mask.
72 * @note Cannot be used to make it gyroscopic.
73 * @par Address: 0x0284B824
74 */
75 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);
76 // Address: 0x0284B7C8
78
81
82 const sead::Vector3f& getPosition() const
83 {
84 return mPosition;
85 }
86
88 {
89 return mParentActorID;
90 }
91
93 {
94 return mAngle;
95 }
96
98 {
99 return mMovementId;
100 }
101
103 {
104 return mTwoWayDistanceMultiplier;
105 }
106
108 {
109 return mFloorGyrationAngle;
110 }
111
113 {
114 return mBoltSpeed;
115 }
116
118 {
119 return mBoltDirection;
120 }
121
126
128 {
129 return mMovementProperties;
130 }
131
133 {
134 return mPivotalUpsideDown;
135 }
136
137 bool getPivotalTilted() const
138 {
139 return mPivotalTilted;
140 }
141
142 bool getPivotalUnknown() const
143 {
144 return mPivotalUnknown;
145 }
146
148 {
149 return mPivotalGyroscopic;
150 }
151
152 void setAngle(Angle angle)
153 {
154 mAngle = angle;
155 }
156
157 void setTwoWayDistanceMultiplier(f32 multiplier)
158 {
159 mTwoWayDistanceMultiplier = multiplier;
160 }
161
162 void setFloorGyrationAngle(Angle angle)
163 {
164 mFloorGyrationAngle = angle;
165 }
166
167 void setBoltSpeed(f32 speed)
168 {
169 mBoltSpeed = speed;
170 }
171
172 void setBoltDirection(DirType direction)
173 {
174 mBoltDirection = direction;
175 }
176
178 {
179 mRectPlatformInfo = info;
180 }
181
183 {
184 mMovementProperties = properties;
185 }
186
187 void setPivotalUpsideDown(bool pivotal_upside_down)
188 {
189 mPivotalUpsideDown = pivotal_upside_down;
190 }
191
192 void setPivotalTilted(bool pivotal_tilted)
193 {
194 mPivotalTilted = pivotal_tilted;
195 }
196
197 void setPivotalUnknown(bool pivotal_unknown)
198 {
199 mPivotalUnknown = pivotal_unknown;
200 }
201
202 void setPivotalGyroscopic(bool pivotal_gyroscopic)
203 {
204 mPivotalGyroscopic = pivotal_gyroscopic;
205 }
206
207private:
223 u8 _5c[0x74-0x5C];
249};
250static_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:157
Angle mAngle
Definition ParentMovementMgr.h:220
bool mPivotalGyroscopic
Definition ParentMovementMgr.h:231
bool mPivotalTilted
Definition ParentMovementMgr.h:229
void linkPivotal2(PivotalRotationSettings pivot_settings)
u32 mTypeMask
Definition ParentMovementMgr.h:218
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:225
u8 _54
Definition ParentMovementMgr.h:221
Angle getAngle() const
Definition ParentMovementMgr.h:92
const sead::Vector3f & getPosition() const
Definition ParentMovementMgr.h:82
void setBoltSpeed(f32 speed)
Definition ParentMovementMgr.h:167
void setPivotalUnknown(bool pivotal_unknown)
Definition ParentMovementMgr.h:197
sead::Vector3f mPivotCenter
Definition ParentMovementMgr.h:211
void setPivotalUpsideDown(bool pivotal_upside_down)
Definition ParentMovementMgr.h:187
DirType mBoltDirection
Definition ParentMovementMgr.h:235
u32 _a4
Definition ParentMovementMgr.h:240
u32 _a0
Definition ParentMovementMgr.h:239
u32 _44
Definition ParentMovementMgr.h:217
Angle mFloorGyrationAngle
Definition ParentMovementMgr.h:224
u8 _5c[0x74-0x5C]
Definition ParentMovementMgr.h:223
void setMovementProperties(const MovementProperties &properties)
Definition ParentMovementMgr.h:182
u32 _ac
Definition ParentMovementMgr.h:242
u32 _40
Definition ParentMovementMgr.h:216
void setAngle(Angle angle)
Definition ParentMovementMgr.h:152
u32 _a8
Definition ParentMovementMgr.h:241
u8 _89
Definition ParentMovementMgr.h:233
u32 _b0
Definition ParentMovementMgr.h:243
sead::Vector3f _18
Definition ParentMovementMgr.h:210
bool getPivotalUnknown() const
Definition ParentMovementMgr.h:142
bool mPivotalUnknown
Definition ParentMovementMgr.h:230
u32 _bc
Definition ParentMovementMgr.h:246
Angle getFloorGyrationAngle() const
Definition ParentMovementMgr.h:107
u32 _b4
Definition ParentMovementMgr.h:244
u8 _88
Definition ParentMovementMgr.h:232
u32 _7c
Definition ParentMovementMgr.h:226
void setPivotalGyroscopic(bool pivotal_gyroscopic)
Definition ParentMovementMgr.h:202
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:172
u32 _34
Definition ParentMovementMgr.h:213
bool getPivotalGyroscopic() const
Definition ParentMovementMgr.h:147
bool mPivotalUpsideDown
Definition ParentMovementMgr.h:228
MovementProperties mMovementProperties
Definition ParentMovementMgr.h:247
f32 mTwoWayDistanceMultiplier
Definition ParentMovementMgr.h:222
void setPivotalTilted(bool pivotal_tilted)
Definition ParentMovementMgr.h:192
f32 mBoltSpeed
Definition ParentMovementMgr.h:236
bool getPivotalTilted() const
Definition ParentMovementMgr.h:137
bool getPivotalUpsideDown() const
Definition ParentMovementMgr.h:132
u8 mMovementId
Definition ParentMovementMgr.h:219
sead::Vector3f _c
Definition ParentMovementMgr.h:209
ActorUniqueID mParentActorID
Definition ParentMovementMgr.h:214
void setRectPlatformInfo(RectPlatformInfo info)
Definition ParentMovementMgr.h:177
RectPlatformInfo getRectPlatformInfo() const
Definition ParentMovementMgr.h:122
u8 getMovementID() const
Definition ParentMovementMgr.h:97
f32 getBoltSpeed() const
Definition ParentMovementMgr.h:112
u32 _8c
Definition ParentMovementMgr.h:234
u32 _3c
Definition ParentMovementMgr.h:215
u32 getTypeMask(ParentMovementType type)
ActorUniqueID getParentActorID() const
Definition ParentMovementMgr.h:87
MovementProperties getMovementProperties() const
Definition ParentMovementMgr.h:127
DirType getBoltDirection() const
Definition ParentMovementMgr.h:117
DECLARE_STATE_ID(ParentMovementType, Search)
u32 _80
Definition ParentMovementMgr.h:227
RectPlatformInfo mRectPlatformInfo
Definition ParentMovementMgr.h:237
void setFloorGyrationAngle(Angle angle)
Definition ParentMovementMgr.h:162
u32 _30
Definition ParentMovementMgr.h:212
FStateMgr< ParentMovementMgr > mFStateMgr
Definition ParentMovementMgr.h:248
u32 _b8
Definition ParentMovementMgr.h:245
u32 _9c
Definition ParentMovementMgr.h:238
sead::Vector3f mPosition
Definition ParentMovementMgr.h:208
f32 getTwoWayDistanceMultiplier() const
Definition ParentMovementMgr.h:102
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