New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ActorBgCollisionCheck.h
Go to the documentation of this file.
1#pragma once
2
3#include <actor/ActorUniqueID.h>
4#include <collision/ActorBgHitCheckCallback.h>
5#include <collision/BasicBgCollisionCheck.h>
6#include <collision/BgCollisionCat.h>
7#include <collision/BgUnitCode.h>
8#include <collision/FollowArg.h>
9#include <map/WaterType.h>
10#include <system/LineNodeMgr.h>
11#include <utility/Angle.h>
12#include <utility/Bitfield.h>
13#include <utility/Direction.h>
14
15#include <container/seadPtrArray.h>
16#include <container/seadSafeArray.h>
17#include <math/seadBoundBox.h>
18#include <prim/seadMemUtil.h>
19#include <prim/seadRuntimeTypeInfo.h>
20
21class BgCollision;
22
24{
25public:
26 // Address: 0x0218A4D0
28
29 // Address: 0x0218A5B4
30 void initialize();
31
32 // Address: 0x0218A608
34 // Address: 0x0218A658
36
37private:
48 //u32 _24[4 / sizeof(u32)]; // Alignment???
49 u64 mBgCheckData; // See BgUnitCode
52};
53static_assert(sizeof(ActorBgCollisionCheckResult) == 0x38);
54
55class Actor;
57
58class ActorBgCollisionCheck // vtbl Address: 0x10041364
59{
60 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: Deleted
61 // getRuntimeTypeInfoStatic()::typeInfo Address: Deleted
63
64public:
66 {
67 cSakaType_None = 0, // Saka angle (abs): [0 deg, 7.0175 deg)
68 cSakaType_Gentle, // Saka angle (abs): [7.0175 deg, 20.3165 deg)
69 cSakaType_Moderate, // Saka angle (abs): [20.3165 deg, 35.7990 deg)
70 cSakaType_Steep, // Saka angle (abs): [35.7990 deg, 54.2010 deg)
71 cSakaType_VerySteep, // Saka angle (abs): >= 54.2010 deg
73 };
74 static_assert(sizeof(SakaType) == 4);
75 static_assert(cSakaType_Num == 5);
76
82
95
96public:
97 class Output : public Bitfield<32>
98 {
99 public:
100 enum Bit
101 {
104 cBit_OnRide = 2, // If ActorBgCollisionCheckResult._3 is set and is standing
106 cBit_OnHalf = 4, // If standing on surface with BgUnitCode::cHitType_Half
110 cBit_OnQuicksand = 8, // If standing on quicksand
113 cBit_Unk13 = 13, // If ActorBgCollisionCheckResult._3 is set and is hitting head
116 cBit_InQuicksand = 16, // If fully submerged in quicksand (more specifically, head is hitting quicksand)
122 cBit_Unk22 = 22, // Right Wall related
123 cBit_Unk23 = 23, // Left Wall related
127 cBit_Unk28 = 28, // Right Wall related
128 cBit_Unk29 = 29, // Left Wall related
131 };
132
133 public:
134 bool checkFoot() const { return isOnBit(cBit_OnGround); }
135 bool checkHead() const { return isOnBit(cBit_HeadCollision); }
136 bool checkRightWall() const { return isOnBit(cBit_WallRCollision); }
137 bool checkLeftWall() const { return isOnBit(cBit_WallLCollision); }
138
139 bool checkWall(u8 direction) const
140 {
141 switch (direction)
142 {
143 case cDirType_Right: return checkRightWall();
144 case cDirType_Left: return checkLeftWall();
145 default: return false;
146 }
147 }
148
149 bool checkRide() const
150 {
151 return isOnBit(cBit_OnRide);
152 }
153
154 bool isOnQuicksand() const
155 {
156 return isOnBit(cBit_OnQuicksand);
157 }
158
159 bool isInQuicksand() const
160 {
161 return isOnBit(cBit_InQuicksand);
162 }
163
164 bool isQuicksand() const
165 {
167 }
168
169 bool checkHeadEx() const
170 {
171 return checkHead() && !isInQuicksand();
172 }
173
174 bool checkRightWallEx() const
175 {
176 return (checkRightWall() || isOnBit(cBit_Unk22)) && !isOnBit(cBit_Unk28);
177 }
178
179 bool checkLeftWallEx() const
180 {
181 return (checkLeftWall() || isOnBit(cBit_Unk23)) && !isOnBit(cBit_Unk29);
182 }
183
184 bool checkWallEx(DirType direction) const
185 {
186 return (isOnBit(cBit_WallRCollision + direction) || isOnBit(cBit_Unk22 + direction)) && !isOnBit(cBit_Unk28 + direction);
187 }
188
189 bool isOnTrampoline() const
190 {
191 return isOnBit(cBit_OnTrampoline);
192 }
193
194 void setFoot()
195 {
196 setBit(cBit_OnGround);
197 }
198 };
199 static_assert(sizeof(Output) == 4);
200
201 class SensorFlag : public Bitfield<64>
202 {
203 public:
253 };
254 static_assert(sizeof(SensorFlag) == 8);
255
256public:
257 struct Sensor
258 {
259 f32 p1; // Typically -> Horizontal sensors: Left edge of sensor. Vertical sensors: Bottom edge of sensor. Player vine sensor: Top edge of sensor.
260 f32 p2; // Typically -> Horizontal sensors: Right edge of sensor. Vertical sensors: Top edge of sensor. Player vine sensor: Bottom edge of sensor.
261 f32 center_offset; // Typically -> Horizontal sensors: Vertical offset from actor position to sensor center. Vertical sensors & Player vine sensor: Horizontal offset from actor position to sensor center.
262 };
263 static_assert(sizeof(Sensor) == 0xC);
264
265public:
270
272
274
277
279
280public:
281 // Address: 0x0218A6EC
283 // Address: 0x0218ADFC
285
286 // Address: 0x0218D954
287 virtual void checkBg();
288 // Address: 0x0218E060
289 virtual void clearBg();
290 // Address: 0x0218E180
291 virtual void atFrameStart();
292 virtual Actor* getOwnerAtRevCheck(f32 bg_collision_pos_y) const = 0;
293 virtual Actor* getOwnerAtHit(const BgCollision& bg_collision, u8 direction) const = 0; // direction: Which sensor was hit
294 virtual s8* vf4C(f32) const = 0;
295 // Address: 0x0219070C
296 virtual void vf54();
297
298protected:
299 // Address: 0x02190C14
300 virtual void checkFoot_();
301 // Address: 0x02191054
302 virtual void checkHead_();
303 // Address: 0x02191494
304 virtual void checkWall_(u8 direction);
305
306public:
307 /**
308 * @brief Initialize the checker with the owner and sensors.
309 * @param owner The actor which the sensors belong to and will follow.
310 * @param foot The sensor to go below and check for floor collision, or @c nullptr if skipping this sensor.
311 * @param head The sensor to go above and check for ceiling collision, or @c nullptr if skipping this sensor.
312 * @param wall The sensor to go on either side and check for wall collision, or @c nullptr if skipping this sensor.
313 * @par Address: 0x0218AF6C
314 */
315 void set(Actor* owner, const Sensor* foot, const Sensor* head, const Sensor* wall);
316
318 {
319 return mOwner;
320 }
321
322 template <typename T>
323 T* getOwner() const
324 {
325 return sead::DynamicCast<T>(mOwner);
326 }
327
328 // Address: 0x0218AEFC
329 void setSensor(const Sensor* sensor, u8 direction);
330 // Address: 0x0218CE74
331 const Sensor* getSensor(u8 direction) const;
332
333 void setSensorFoot(const Sensor* foot)
334 {
335 setSensor(foot, cDirType_Down);
336 }
337
338 void setSensorHead(const Sensor* head)
339 {
340 setSensor(head, cDirType_Up);
341 }
342
343 void setSensorWall(const Sensor* wall_r)
344 {
345 setSensor(wall_r, cDirType_Right);
346 if (wall_r != nullptr)
347 {
348 Sensor wall_l = *wall_r;
349 wall_l.center_offset *= -1.0f;
350 setSensor(&wall_l, cDirType_Left);
351 }
352 else
353 {
354 setSensor(nullptr, cDirType_Left);
355 }
356 }
357
358 bool isSensor1Set(DirType direction) const
359 {
360 return mIsSensor1Set[direction];
361 }
362
363 bool isSensor1Null(DirType direction) const
364 {
365 return mIsSensor1Null[direction];
366 }
367
368 bool isSensor2Set(DirType direction) const
369 {
370 return mIsSensor2Set[direction];
371 }
372
374 {
375 return mSensor1;
376 }
377
379 {
380 return mSensor2;
381 }
382
383 Sensor* getSensor1(DirType direction)
384 {
385 return &(mSensor1[direction]);
386 }
387
388 const Sensor* getSensor1(DirType direction) const
389 {
390 return &(mSensor1[direction]);
391 }
392
393 Sensor* getSensor2(DirType direction)
394 {
395 return &(mSensor2[direction]);
396 }
397
398 const Sensor* getSensor2(DirType direction) const
399 {
400 return &(mSensor2[direction]);
401 }
402
403 const Sensor* getSensorEffective(DirType direction) const
404 {
405 if (isSensor1Set(direction))
406 {
407 if (!isSensor1Null(direction))
408 return getSensor1(direction);
409 }
410 else if (isSensor2Set(direction))
411 {
412 return getSensor2(direction);
413 }
414 return nullptr;
415 }
416
417 SensorFlag& getSensorFlag(DirType direction)
418 {
419 return mSensorFlag[direction];
420 }
421
422 const SensorFlag& getSensorFlag(DirType direction) const
423 {
424 return mSensorFlag[direction];
425 }
426
428 {
429 return mIgnoreActor;
430 }
431
433 {
434 mIgnoreActor = actor;
435 }
436
437 const FollowArg& getFollowArg() const { return mFollowArg; }
438
439 Output& getOutput() { return mOutput; }
440 const Output& getOutput() const { return mOutput; }
441
442 bool checkFoot() const
443 {
445 }
446
447 bool checkHead() const
448 {
450 }
451
452 bool checkWall(DirType direction) const
453 {
454 return getOutput().checkWallEx(direction);
455 }
456
457 bool checkRide() const
458 {
460 }
461
462 bool isQuicksand() const
463 {
465 }
466
467 bool isOnTrampoline() const
468 {
470 }
471
472 const sead::Vector2f& getBgSpeed() const
473 {
474 return mBgSpeed;
475 }
476
477 bool isHit(u8 hit_dir_flag) const
478 {
479 return mHitDirectionFlag & hit_dir_flag;
480 }
481
482 // Address: 0x0218AC38
484 // Address: 0x0218ACA8
486 // Address: 0x0218AD6C
487 BgCollision* getHitBgCollisionWall(DirType direction) const;
488
489 const u64& getBgCheckData(DirType direction) const
490 {
491 return mBgCheckData[direction];
492 }
493
494 const u64& getBgCheckDataPrev(DirType direction) const
495 {
496 return mBgCheckDataPrev[direction];
497 }
498
499 // Address: 0x0218B214
500 Angle getSakaBaseAngle(); // Angle of the slope surface tangent (only values between -90 deg and 90 deg make sense)
501 // Address: 0x0218B254
503
504 // Address: 0x0218BCA8
505 SakaType getSakaType(Angle saka_base_angle);
506
507 bool isSaka()
508 {
509 return getSakaType(getSakaBaseAngle());
510 }
511
512 // Address: 0x0218E234
513 SakaDir getSakaDir(); // Returns the downhill direction along the slope surface, left if the slope descends leftwards, right if the slope descends rightwards.
514
515 // Address: 0x0218E260
516 Angle getSakaAngle(DirType dir); // Slope tangent angle signed in the move direction: + => moving uphill, - => moving downhill
517 // Address: 0x0218E28C
519
520 // Address: 0x0218E2B8
521 Angle getWallAngle(DirType dir);
522
524 {
525 return mBgCheck;
526 }
527
529 {
530 return mBgCheck;
531 }
532
533 // Address: 0x0218B90C
535
536 // Address: 0x0218F0C0
537 static WaterType checkWater(f32* surface_pos_y, const sead::Vector3f& pos, u8 layer);
538 // Address: 0x0218F72C
539 static WaterType checkWater(f32* surface_pos_y, BgCollisionCheckHitResult* hit_result, const sead::Vector3f& pos, u8 layer);
540 // Address: 0x0219047C
541 static WaterType checkWater(const sead::Vector3f& pos, u8 layer);
542
543 // Address: 0x021905c8
544 static u32 checkWaterDepth(f32 x, f32 y, u8 layer);
545
546protected:
548
557 Actor* mIgnoreActor; // Force mBgCheck to ignore BgCollision owned by this actor
569 u8 mHitDirectionFlag; // lower 4 bits: normal, upper 4 bits: boost block
571 bool _916;
572 bool _917;
573 bool _918;
586 //u32 _a14[4 / sizeof(u32)]; // Alignment???
592};
593static_assert(sizeof(ActorBgCollisionCheck) == 0x14E0);
Definition ActorBgCollisionCheck.h:24
sead::Vector2f _c
Definition ActorBgCollisionCheck.h:44
u8 _2
Definition ActorBgCollisionCheck.h:40
u8 _0
Definition ActorBgCollisionCheck.h:38
u32 _4
Definition ActorBgCollisionCheck.h:42
u8 _3
Definition ActorBgCollisionCheck.h:41
u32 _34
Definition ActorBgCollisionCheck.h:51
u64 mBgCheckData
Definition ActorBgCollisionCheck.h:49
void setOwner(BgCollision *)
BgCollision * mOwner
Definition ActorBgCollisionCheck.h:47
u8 _1
Definition ActorBgCollisionCheck.h:39
f32 _30
Definition ActorBgCollisionCheck.h:50
BgCollision * getOwner() const
ActorUniqueID mActorUniqueID
Definition ActorBgCollisionCheck.h:46
sead::Vector2f _14
Definition ActorBgCollisionCheck.h:45
Angle mAngle
Definition ActorBgCollisionCheck.h:43
Definition ActorBgCollisionCheck.h:98
bool checkRide() const
Definition ActorBgCollisionCheck.h:149
bool checkWall(u8 direction) const
Definition ActorBgCollisionCheck.h:139
bool checkHead() const
Definition ActorBgCollisionCheck.h:135
bool isQuicksand() const
Definition ActorBgCollisionCheck.h:164
bool checkLeftWall() const
Definition ActorBgCollisionCheck.h:137
bool isInQuicksand() const
Definition ActorBgCollisionCheck.h:159
bool isOnTrampoline() const
Definition ActorBgCollisionCheck.h:189
bool checkRightWallEx() const
Definition ActorBgCollisionCheck.h:174
bool checkFoot() const
Definition ActorBgCollisionCheck.h:134
bool checkWallEx(DirType direction) const
Definition ActorBgCollisionCheck.h:184
bool isOnQuicksand() const
Definition ActorBgCollisionCheck.h:154
void setFoot()
Definition ActorBgCollisionCheck.h:194
Bit
Definition ActorBgCollisionCheck.h:101
@ cBit_OnRide
Definition ActorBgCollisionCheck.h:104
@ cBit_Unk15
Definition ActorBgCollisionCheck.h:115
@ cBit_Unk27
Definition ActorBgCollisionCheck.h:126
@ cBit_Unk29
Definition ActorBgCollisionCheck.h:128
@ cBit_Unk14
Definition ActorBgCollisionCheck.h:114
@ cBit_OnGround
Definition ActorBgCollisionCheck.h:102
@ cBit_Unk6
Definition ActorBgCollisionCheck.h:108
@ cBit_Unk31
Definition ActorBgCollisionCheck.h:130
@ cBit_Unk9
Definition ActorBgCollisionCheck.h:111
@ cBit_Unk24
Definition ActorBgCollisionCheck.h:124
@ cBit_WallRCollision
Definition ActorBgCollisionCheck.h:118
@ cBit_Unk28
Definition ActorBgCollisionCheck.h:127
@ cBit_OnHalf
Definition ActorBgCollisionCheck.h:106
@ cBit_InQuicksand
Definition ActorBgCollisionCheck.h:116
@ cBit_OnTrampoline
Definition ActorBgCollisionCheck.h:105
@ cBit_CarryRelatedL
Definition ActorBgCollisionCheck.h:121
@ cBit_WallLCollision
Definition ActorBgCollisionCheck.h:119
@ cBit_OnSlope
Definition ActorBgCollisionCheck.h:103
@ cBit_HeadCollision
Definition ActorBgCollisionCheck.h:112
@ cBit_Unk5
Definition ActorBgCollisionCheck.h:107
@ cBit_Unk17
Definition ActorBgCollisionCheck.h:117
@ cBit_CarryRelatedR
Definition ActorBgCollisionCheck.h:120
@ cBit_OnHorzPipe
Definition ActorBgCollisionCheck.h:109
@ cBit_OnQuicksand
Definition ActorBgCollisionCheck.h:110
@ cBit_Unk22
Definition ActorBgCollisionCheck.h:122
@ cBit_Unk13
Definition ActorBgCollisionCheck.h:113
@ cBit_Unk26
Definition ActorBgCollisionCheck.h:125
@ cBit_Unk23
Definition ActorBgCollisionCheck.h:123
@ cBit_Unk30
Definition ActorBgCollisionCheck.h:129
bool checkRightWall() const
Definition ActorBgCollisionCheck.h:136
bool checkLeftWallEx() const
Definition ActorBgCollisionCheck.h:179
bool checkHeadEx() const
Definition ActorBgCollisionCheck.h:169
Definition ActorBgCollisionCheck.h:202
Bit
Definition ActorBgCollisionCheck.h:205
@ cBit_Inactive
Definition ActorBgCollisionCheck.h:234
@ cBit_24
Definition ActorBgCollisionCheck.h:228
@ cBit_51
Definition ActorBgCollisionCheck.h:246
@ cBit_13
Definition ActorBgCollisionCheck.h:218
@ cBit_4
Definition ActorBgCollisionCheck.h:210
@ cBit_21
Definition ActorBgCollisionCheck.h:225
@ cBit_26
Definition ActorBgCollisionCheck.h:230
@ cBit_54
Definition ActorBgCollisionCheck.h:249
@ cBit_38
Definition ActorBgCollisionCheck.h:238
@ cBit_27
Definition ActorBgCollisionCheck.h:231
@ cBit_46
Definition ActorBgCollisionCheck.h:242
@ cBit_15
Definition ActorBgCollisionCheck.h:220
@ cBit_43
Definition ActorBgCollisionCheck.h:240
@ cBit_18
Definition ActorBgCollisionCheck.h:223
@ cBit_10
Definition ActorBgCollisionCheck.h:216
@ cBit_BreakBlocks
Definition ActorBgCollisionCheck.h:243
@ cBit_28
Definition ActorBgCollisionCheck.h:232
@ cBit_1
Definition ActorBgCollisionCheck.h:207
@ cBit_52
Definition ActorBgCollisionCheck.h:247
@ cBit_9
Definition ActorBgCollisionCheck.h:215
@ cBit_16
Definition ActorBgCollisionCheck.h:221
@ cBit_50
Definition ActorBgCollisionCheck.h:245
@ cBit_8
Definition ActorBgCollisionCheck.h:214
@ cBit_23
Definition ActorBgCollisionCheck.h:227
@ cBit_55
Definition ActorBgCollisionCheck.h:250
@ cBit_5
Definition ActorBgCollisionCheck.h:211
@ cBit_17
Definition ActorBgCollisionCheck.h:222
@ cBit_14
Definition ActorBgCollisionCheck.h:219
@ cBit_6
Definition ActorBgCollisionCheck.h:212
@ cBit_22
Definition ActorBgCollisionCheck.h:226
@ cBit_36
Definition ActorBgCollisionCheck.h:236
@ cBit_56
Definition ActorBgCollisionCheck.h:251
@ cBit_3
Definition ActorBgCollisionCheck.h:209
@ cBit_0
Definition ActorBgCollisionCheck.h:206
Definition ActorBgCollisionCheck.h:59
sead::FixedPtrArray< BgCollision, 512 > _54
Definition ActorBgCollisionCheck.h:551
SensorBgCollisionCatArray mBgCheckResultIdxPrev
Definition ActorBgCollisionCheck.h:585
sead::UnsafeArray< BgCheckResultArray, cDirType_Num > SensorBgCheckResultArray
Definition ActorBgCollisionCheck.h:276
SensorBoolArray mIsSensor2Set
Definition ActorBgCollisionCheck.h:576
bool isSensor2Set(DirType direction) const
Definition ActorBgCollisionCheck.h:368
T * getOwner() const
Definition ActorBgCollisionCheck.h:323
bool isSensor1Null(DirType direction) const
Definition ActorBgCollisionCheck.h:363
const Sensor * getSensorEffective(DirType direction) const
Definition ActorBgCollisionCheck.h:403
bool isSaka()
Definition ActorBgCollisionCheck.h:507
WallSensorArray mSensor4
Definition ActorBgCollisionCheck.h:580
bool mIsInitialized
Definition ActorBgCollisionCheck.h:570
Actor * mOwner
Definition ActorBgCollisionCheck.h:556
virtual void vf54()
SensorFlag & getSensorFlag(DirType direction)
Definition ActorBgCollisionCheck.h:417
SensorBgCheckResultArray mBgCheckResult
Definition ActorBgCollisionCheck.h:587
virtual Actor * getOwnerAtRevCheck(f32 bg_collision_pos_y) const =0
u8 mHitDirectionFlag
Definition ActorBgCollisionCheck.h:569
const u64 & getBgCheckData(DirType direction) const
Definition ActorBgCollisionCheck.h:489
sead::BoundBox2f _8d4
Definition ActorBgCollisionCheck.h:563
HitDirBit
Definition ActorBgCollisionCheck.h:84
@ cHitDirBit_Right
Definition ActorBgCollisionCheck.h:85
@ cHitDirBit_Down
Definition ActorBgCollisionCheck.h:88
@ cHitDirBit_Up
Definition ActorBgCollisionCheck.h:87
@ cHitDirBit_BoostBlock_Down
Definition ActorBgCollisionCheck.h:93
@ cHitDirBit_BoostBlock_Up
Definition ActorBgCollisionCheck.h:92
@ cHitDirBit_Left
Definition ActorBgCollisionCheck.h:86
@ cHitDirBit_BoostBlock_Right
Definition ActorBgCollisionCheck.h:90
@ cHitDirBit_BoostBlock_Left
Definition ActorBgCollisionCheck.h:91
bool isSensor1Set(DirType direction) const
Definition ActorBgCollisionCheck.h:358
sead::Vector2f mBgSpeed
Definition ActorBgCollisionCheck.h:566
static u32 checkWaterDepth(f32 x, f32 y, u8 layer)
SensorBoolArray mIsSensor1Null
Definition ActorBgCollisionCheck.h:575
List::Node mListNodeHead
Definition ActorBgCollisionCheck.h:553
WallSensorBoolArray mIsSensor4Set
Definition ActorBgCollisionCheck.h:581
sead::UnsafeArray< Sensor, cDirType_Num > SensorArray
Definition ActorBgCollisionCheck.h:266
virtual void checkHead_()
ActorBgHitCheckCallback mBgHitCheckCallback
Definition ActorBgCollisionCheck.h:550
bool checkRide() const
Definition ActorBgCollisionCheck.h:457
const Sensor * getSensor1(DirType direction) const
Definition ActorBgCollisionCheck.h:388
Sensor * getSensor1(DirType direction)
Definition ActorBgCollisionCheck.h:383
const Output & getOutput() const
Definition ActorBgCollisionCheck.h:440
Output mOutputPrev
Definition ActorBgCollisionCheck.h:560
virtual void clearBg()
u32 _910
Definition ActorBgCollisionCheck.h:568
SensorArray mSensor2
Definition ActorBgCollisionCheck.h:578
sead::BoundBox2f _8f4
Definition ActorBgCollisionCheck.h:565
Angle getSakaAngle(DirType dir)
bool isOnTrampoline() const
Definition ActorBgCollisionCheck.h:467
void setSensorFoot(const Sensor *foot)
Definition ActorBgCollisionCheck.h:333
sead::BoundBox2f _8c4
Definition ActorBgCollisionCheck.h:562
SakaType getSakaType(Angle saka_base_angle)
const SensorFlag & getSensorFlag(DirType direction) const
Definition ActorBgCollisionCheck.h:422
const Sensor * getSensor(u8 direction) const
BasicBgCollisionCheck mBgCheck
Definition ActorBgCollisionCheck.h:549
virtual void checkFoot_()
u32 _14d8
Definition ActorBgCollisionCheck.h:591
const SensorArray & getSensorArray2() const
Definition ActorBgCollisionCheck.h:378
bool isHit(u8 hit_dir_flag) const
Definition ActorBgCollisionCheck.h:477
virtual void checkBg()
const SensorArray & getSensorArray1() const
Definition ActorBgCollisionCheck.h:373
List::Node mListNodeWallR
Definition ActorBgCollisionCheck.h:554
List::Node mListNodeWallL
Definition ActorBgCollisionCheck.h:555
sead::UnsafeArray< u64, cDirType_Num > SensorHitBgCheckDataArray
Definition ActorBgCollisionCheck.h:278
void set(Actor *owner, const Sensor *foot, const Sensor *head, const Sensor *wall)
Initialize the checker with the owner and sensors.
FollowArg mFollowArg
Definition ActorBgCollisionCheck.h:558
SensorArray mSensor3
Definition ActorBgCollisionCheck.h:579
BgCollision * getHitBgCollisionWall(DirType direction) const
sead::BoundBox2f _8e4
Definition ActorBgCollisionCheck.h:564
sead::UnsafeArray< Sensor, cDirType_NumX > WallSensorArray
Definition ActorBgCollisionCheck.h:268
Angle getWallAngle(DirType dir)
bool isQuicksand() const
Definition ActorBgCollisionCheck.h:462
WallSensorBoolArray mIsSensor4SetPrev
Definition ActorBgCollisionCheck.h:582
sead::UnsafeArray< ActorBgCollisionCheckResult, cBgCollisionCat_Num > BgCheckResultArray
Definition ActorBgCollisionCheck.h:275
SensorBgCollisionCatArray mBgCheckResultIdx
Definition ActorBgCollisionCheck.h:584
Output mOutput
Definition ActorBgCollisionCheck.h:559
SensorHitBgCheckDataArray mBgCheckDataPrev
Definition ActorBgCollisionCheck.h:590
virtual s8 * vf4C(f32) const =0
static WaterType checkWater(f32 *surface_pos_y, BgCollisionCheckHitResult *hit_result, const sead::Vector3f &pos, u8 layer)
f32 _90c
Definition ActorBgCollisionCheck.h:567
BasicBgCollisionCheck & getBgCheck()
Definition ActorBgCollisionCheck.h:523
void setIgnoreActor(Actor *actor)
Definition ActorBgCollisionCheck.h:432
const BasicBgCollisionCheck & getBgCheck() const
Definition ActorBgCollisionCheck.h:528
bool checkFoot() const
Definition ActorBgCollisionCheck.h:442
const sead::Vector2f & getBgSpeed() const
Definition ActorBgCollisionCheck.h:472
SakaDir
Definition ActorBgCollisionCheck.h:78
@ cSakaDir_Left
Definition ActorBgCollisionCheck.h:80
@ cSakaDir_Right
Definition ActorBgCollisionCheck.h:79
const FollowArg & getFollowArg() const
Definition ActorBgCollisionCheck.h:437
virtual void checkWall_(u8 direction)
void setSensorHead(const Sensor *head)
Definition ActorBgCollisionCheck.h:338
sead::UnsafeArray< SensorFlag, cDirType_Num > SensorFlagArray
Definition ActorBgCollisionCheck.h:271
void setSensor(const Sensor *sensor, u8 direction)
virtual ~ActorBgCollisionCheck()
Actor * mIgnoreActor
Definition ActorBgCollisionCheck.h:557
Actor * getOwner() const
Definition ActorBgCollisionCheck.h:317
bool checkHead() const
Definition ActorBgCollisionCheck.h:447
SensorHitBgCheckDataArray mBgCheckData
Definition ActorBgCollisionCheck.h:589
Output & getOutput()
Definition ActorBgCollisionCheck.h:439
LineNodeMgr< ActorBgCollisionCheck > List
Definition ActorBgCollisionCheck.h:547
SensorFlagArray mSensorFlag
Definition ActorBgCollisionCheck.h:583
SensorBgCheckResultArray mBgCheckResultPrev
Definition ActorBgCollisionCheck.h:588
bool _916
Definition ActorBgCollisionCheck.h:571
const Sensor * getSensor2(DirType direction) const
Definition ActorBgCollisionCheck.h:398
BgCollision * getHitBgCollisionHead() const
static WaterType checkWater(f32 *surface_pos_y, const sead::Vector3f &pos, u8 layer)
void setSensorWall(const Sensor *wall_r)
Definition ActorBgCollisionCheck.h:343
Sensor * getSensor2(DirType direction)
Definition ActorBgCollisionCheck.h:393
sead::UnsafeArray< bool, cDirType_Num > SensorBoolArray
Definition ActorBgCollisionCheck.h:267
sead::UnsafeArray< BgCollisionCat, cDirType_Num > SensorBgCollisionCatArray
Definition ActorBgCollisionCheck.h:273
virtual Actor * getOwnerAtHit(const BgCollision &bg_collision, u8 direction) const =0
Angle getHeadSakaAngle(DirType dir)
SensorArray mSensor1
Definition ActorBgCollisionCheck.h:577
bool _917
Definition ActorBgCollisionCheck.h:572
BgCollision * getHitBgCollisionFoot() const
static WaterType checkWater(const sead::Vector3f &pos, u8 layer)
SensorBoolArray mIsSensor1Set
Definition ActorBgCollisionCheck.h:574
bool _918
Definition ActorBgCollisionCheck.h:573
Actor * getIgnoreActor() const
Definition ActorBgCollisionCheck.h:427
sead::BoundBox2f _8b4
Definition ActorBgCollisionCheck.h:561
virtual void atFrameStart()
bool checkWall(DirType direction) const
Definition ActorBgCollisionCheck.h:452
const u64 & getBgCheckDataPrev(DirType direction) const
Definition ActorBgCollisionCheck.h:494
sead::UnsafeArray< bool, cDirType_NumX > WallSensorBoolArray
Definition ActorBgCollisionCheck.h:269
List::Node mListNodeFoot
Definition ActorBgCollisionCheck.h:552
Definition Actor.h:19
Definition BgCollision.h:19
Definition ActorBgCollisionCheck.h:258
f32 p2
Definition ActorBgCollisionCheck.h:260
f32 p1
Definition ActorBgCollisionCheck.h:259
f32 center_offset
Definition ActorBgCollisionCheck.h:261
Definition BgCollisionCheckHitResult.h:6