3#include <actor/Actor.h>
4#include <collision/BgCollisionCat.h>
5#include <collision/BgUnitCode.h>
6#include <collision/FollowArg.h>
7#include <system/LineNodeMgr.h>
8#include <utility/Angle.h>
10#include <math/seadMatrix.h>
37 static_assert(
sizeof(
InitArg) == 0x18);
165 return mAffectedArea;
173 template <
typename T>
176 return sead::DynamicCast<T>(mOwner);
216 return mFollowArg.position->x + mPosOffset.x;
221 return mFollowArg.position->y + mPosOffset.y;
227 return *
reinterpret_cast<sead::Vector2f*>(mFollowArg.position) + mPosOffset;
232 return mFollowArg.position_prev->x + mPosOffsetPrev.x;
237 return mFollowArg.position_prev->y + mPosOffsetPrev.y;
243 return *
reinterpret_cast<sead::Vector2f*>(mFollowArg.position_prev) + mPosOffsetPrev;
248 return getPosX() + mTypeOffset.x;
253 return getPosY() + mTypeOffset.y;
258 return getPos() + mTypeOffset;
263 return getPosPrevX() + mTypeOffsetPrev.x;
268 return getPosPrevY() + mTypeOffsetPrev.y;
273 return getPosPrev() + mTypeOffsetPrev;
346 mFlag.setDirect(flag);
361 return mFlag.isOnBit(bit);
365
366
367
368
369
393 return actor_self->getSpeedVec().y > 0.0f;
399 return actor_self->getSpeedVec().y < 0.0f;
405 if (direction == cDirType_Right)
407 if (actor_self->getSpeedVec().x > 0.0f)
412 if (actor_self->getSpeedVec().x < 0.0f)
Definition ActorBgCollisionCheck.h:24
Definition ActorBgCollisionCheck.h:60
Definition ActorCollisionDrcTouchCallback.h:10
Definition BasicBgCollisionCheck.h:18
Definition BgCollision.h:20
virtual void onBgCheckDataChange(const u64 &bc_data)=0
LineNodeMgr< BgCollision > List
Definition BgCollision.h:419
List::Node mPoleListNode
Definition BgCollision.h:426
sead::Vector2f mPosOffset2
Definition BgCollision.h:430
u32 _154
Definition BgCollision.h:460
void setBgCheckData(const u64 &bc_data)
const sead::Vector2f & getTypeOffset() const
Definition BgCollision.h:209
Angle mAnglePrev
Definition BgCollision.h:446
List::Node mTouchDrcHoldListNode
Definition BgCollision.h:428
sead::BoundBox2f mAffectedArea
Definition BgCollision.h:429
const u64 & getBgCheckData() const
Definition BgCollision.h:329
Actor * getOwner() const
Definition BgCollision.h:168
CheckRevWall mCheckRevWall
Definition BgCollision.h:458
bool(* CheckRev)(Actor *, Actor *)
Definition BgCollision.h:27
List::Node _34
Definition BgCollision.h:424
Actor * mIgnoreActor
Definition BgCollision.h:434
virtual bool checkAreaBasic(BgCollisionCheckResultArea *res, const BasicBgCollisionCheck &bc, const sead::Vector2f &p0, const sead::Vector2f &p1, u8 hit_dir_mask)=0
sead::BitFlag32 mFlag
Definition BgCollision.h:431
bool isFlag(s32 bit) const
Definition BgCollision.h:359
const sead::Vector2f & getPosOffset() const
Definition BgCollision.h:194
Actor * getIgnoreActor() const
Definition BgCollision.h:179
BcList mBcListHead
Definition BgCollision.h:448
List::Node mNonSolidListNode
Definition BgCollision.h:423
sead::Vector2f mPosOffset
Definition BgCollision.h:436
sead::Vector2f mTypeOffset
Definition BgCollision.h:440
void setCheckRev(CheckRev check_rev_foot, CheckRev check_rev_head, CheckRevWall check_rev_wall)
Definition BgCollision.h:377
sead::Vector2f mPosOffsetPrev
Definition BgCollision.h:437
Type
Definition BgCollision.h:91
@ cType_AirshipHand
Definition BgCollision.h:128
@ cType_Fence
Definition BgCollision.h:97
@ cType_Coin
Definition BgCollision.h:93
@ cType_BlockUsed
Definition BgCollision.h:104
@ cType_Vine
Definition BgCollision.h:98
@ cType_UnknownLiquid
Definition BgCollision.h:110
@ cType_SpineCoaster
Definition BgCollision.h:131
@ cType_SwingingVine
Definition BgCollision.h:119
@ cType_GrrrolPassage
Definition BgCollision.h:125
@ cType_Wood
Definition BgCollision.h:117
@ cType_SpikesUp
Definition BgCollision.h:126
@ cType_GreenCoin
Definition BgCollision.h:94
@ cType_QuestionBlockBig
Definition BgCollision.h:101
@ cType_BlueCoin
Definition BgCollision.h:95
@ cType_RedBlock
Definition BgCollision.h:107
@ cType_Cloud
Definition BgCollision.h:118
@ cType_Ice
Definition BgCollision.h:122
@ cType_WoodBlock
Definition BgCollision.h:105
@ cType_WaterGeyser
Definition BgCollision.h:129
@ cType_Quicksand
Definition BgCollision.h:114
@ cType_RopeLadder
Definition BgCollision.h:121
@ cType_SwingingChain
Definition BgCollision.h:120
@ cType_Carpet
Definition BgCollision.h:115
@ cType_DonutBlock
Definition BgCollision.h:108
@ cType_Poison
Definition BgCollision.h:113
@ cType_StreamCurrent
Definition BgCollision.h:127
@ cType_BlockUsedBig
Definition BgCollision.h:103
@ cType_BrickBlock
Definition BgCollision.h:100
@ cType_BoostBlock
Definition BgCollision.h:109
@ cType_BreakableIce
Definition BgCollision.h:123
@ cType_Leaves
Definition BgCollision.h:116
@ cType_CoinOutline
Definition BgCollision.h:96
@ cType_Urchin
Definition BgCollision.h:132
@ cType_Water
Definition BgCollision.h:111
@ cType_QuestionBlock
Definition BgCollision.h:99
@ cType_BreakableIce2
Definition BgCollision.h:124
@ cType_Normal
Definition BgCollision.h:92
@ cType_Unknown10
Definition BgCollision.h:130
@ cType_BrickBlockBig
Definition BgCollision.h:102
@ cType_InvisibleBlock
Definition BgCollision.h:133
@ cType_StoneBlock
Definition BgCollision.h:106
@ cType_Lava
Definition BgCollision.h:112
const sead::Vector2f & getPosOffset2() const
Definition BgCollision.h:199
void(* CallbackWall)(BgCollision *, ActorBgCollisionCheck *, u8 direction)
Definition BgCollision.h:25
T * getOwner() const
Definition BgCollision.h:174
BcList mBcListWallL
Definition BgCollision.h:450
void setFlag(u32 flag)
Definition BgCollision.h:344
void resetFlag(u32 mask)
Definition BgCollision.h:349
sead::Vector2f getTypePos() const
Definition BgCollision.h:256
virtual bool checkPointInsideOrWithinDistance(const sead::Vector2f &p, f32 distance) const =0
void clearFlag()
Definition BgCollision.h:354
BcList mBcListWallR
Definition BgCollision.h:449
const FollowArg & getFollowArg() const
Definition BgCollision.h:184
List::Node mCoinListNode
Definition BgCollision.h:425
const BcList & getBcListWallR() const
Definition BgCollision.h:301
sead::Vector2f mTypeOffsetPrev
Definition BgCollision.h:441
void setAttr(BgUnitCode::Attr attr)
List::Node mTouchDrcCheckNoDamageListNode
Definition BgCollision.h:427
sead::Vector2f & getTypeOffset()
Definition BgCollision.h:204
f32 getPosPrevX() const
Definition BgCollision.h:230
u64 mBgCheckData
Definition BgCollision.h:452
LineNodeMgr< ActorBgCollisionCheck > BcList
Definition BgCollision.h:22
sead::Vector2f getPos() const
Definition BgCollision.h:224
void setCallback(Callback callback_foot, Callback callback_head, CallbackWall callback_wall)
Register callbacks for interacting with a sensor of another actor.
Definition BgCollision.h:370
CheckRev mCheckRevFoot
Definition BgCollision.h:456
void releaseBcFoot(ActorBgCollisionCheck *bc_check)
Type mType
Definition BgCollision.h:451
sead::Vector2f mRotPivotOffsetPrev
Definition BgCollision.h:439
void setHitType(BgUnitCode::HitType hit_type)
BcList mBcListFoot
Definition BgCollision.h:447
void setAngle(Angle angle)
Definition BgCollision.h:286
f32 getTypePosY() const
Definition BgCollision.h:251
f32 getPosX() const
Definition BgCollision.h:214
const BcList & getBcListFoot() const
Definition BgCollision.h:291
Type getType() const
Definition BgCollision.h:325
List::Node mActiveListNode
Definition BgCollision.h:421
Callback mCallbackFoot
Definition BgCollision.h:453
Actor * mOwner
Definition BgCollision.h:433
virtual bool checkAreaActor(ActorBgCollisionCheckResult *, sead::Vector2f *, sead::Vector2f *, u8 direction, ActorBgCollisionCheck *)=0
bool(* CheckRevWall)(Actor *, Actor *, u8 direction)
Definition BgCollision.h:28
sead::Vector2f getTypePosPrev() const
Definition BgCollision.h:271
const BcList & getBcListHead() const
Definition BgCollision.h:296
static bool CheckRevUpperSpeed(Actor *actor_self, Actor *actor_other)
Definition BgCollision.h:391
sead::Vector2f & getPosOffset()
Definition BgCollision.h:189
static bool CheckRevUnderSpeed(Actor *actor_self, Actor *actor_other)
Definition BgCollision.h:397
f32 getTypePosPrevY() const
Definition BgCollision.h:266
sead::BitFlag32 mCheckRevFlag
Definition BgCollision.h:432
void setSlipAttr(BgUnitCode::SlipAttr slip_attr)
static bool CheckRevSideSpeed(Actor *actor_self, Actor *actor_other, u8 direction)
Definition BgCollision.h:403
sead::Vector2f getPosPrev() const
Definition BgCollision.h:240
Angle mAngle
Definition BgCollision.h:445
CheckRev mCheckRevHead
Definition BgCollision.h:457
f32 getPosPrevY() const
Definition BgCollision.h:235
sead::Matrix22f mRotMtx
Definition BgCollision.h:444
FollowArg mFollowArg
Definition BgCollision.h:435
bool mIsInactive
Definition BgCollision.h:442
f32 getTypePosX() const
Definition BgCollision.h:246
f32 getPosY() const
Definition BgCollision.h:219
const BcList & getBcListWallL() const
Definition BgCollision.h:306
const sead::BoundBox2f getAffectedArea() const
Definition BgCollision.h:163
virtual bool checkPointInside(bool *on_edge, const sead::Vector2f &p) const =0
Callback mCallbackHead
Definition BgCollision.h:454
List::Node mSolidListNode
Definition BgCollision.h:422
virtual bool vf5C(u32 *)=0
BgCollisionCat mCategory
Definition BgCollision.h:443
sead::Vector2f addDokanMoveDiff(sead::Vector2f pos)
void setDrcTouchCallback(ActorCollisionDrcTouchCallback *drc_touch_callback)
Definition BgCollision.h:384
void(* Callback)(BgCollision *, ActorBgCollisionCheck *)
Definition BgCollision.h:24
void entryBcFoot(ActorBgCollisionCheck *bc_check)
bool isInactive() const
Definition BgCollision.h:276
ActorCollisionDrcTouchCallback * mDrcTouchCallback
Definition BgCollision.h:459
bool isEntryBcFoot(ActorBgCollisionCheck *bc_check) const
sead::Vector2f mRotPivotOffset
Definition BgCollision.h:438
f32 getTypePosPrevX() const
Definition BgCollision.h:261
Angle getAngle() const
Definition BgCollision.h:281
CallbackWall mCallbackWall
Definition BgCollision.h:455
Definition BgCollisionCheckResult.h:19
Definition BgCollision.h:40
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:42
sead::Vector2f left_top_offset
Definition BgCollision.h:43
sead::Vector2f pos_offset
Definition BgCollision.h:41
sead::Vector2f right_under_offset
Definition BgCollision.h:44
Angle angle
Definition BgCollision.h:45
Definition BgCollision.h:50
f32 radius
Definition BgCollision.h:54
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:52
Angle angle
Definition BgCollision.h:55
sead::Vector2f pos_offset
Definition BgCollision.h:51
sead::Vector2f center_offset
Definition BgCollision.h:53
Definition BgCollision.h:60
sead::Vector2f center_offset
Definition BgCollision.h:63
sead::Vector2f half_size
Definition BgCollision.h:64
Angle angle
Definition BgCollision.h:65
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:62
sead::Vector2f pos_offset
Definition BgCollision.h:61
Definition BgCollision.h:31
const sead::Vector2f * points
Definition BgCollision.h:34
Angle angle
Definition BgCollision.h:35
sead::Vector2f pos_offset
Definition BgCollision.h:32
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:33
Definition BgCollision.h:70
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:72
sead::Vector2f pos_offset
Definition BgCollision.h:71
Angle angle
Definition BgCollision.h:74
sead::Vector2f points[2]
Definition BgCollision.h:73
Definition BgCollision.h:79
f32 range
Definition BgCollision.h:84
sead::Vector2f start_point
Definition BgCollision.h:82
Angle * line_angles
Definition BgCollision.h:85
f32 line_length
Definition BgCollision.h:83
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:81
Angle angle
Definition BgCollision.h:86
sead::Vector2f pos_offset
Definition BgCollision.h:80