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