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>
36 static_assert(
sizeof(
InitArg) == 0x18);
163 return mAffectedArea;
171 template <
typename T>
174 return sead::DynamicCast<T>(mOwner);
214 return mFollowArg.position->x + mPosOffset.x;
219 return mFollowArg.position->y + mPosOffset.y;
225 return *
reinterpret_cast<sead::Vector2f*>(mFollowArg.position) + mPosOffset;
230 return mFollowArg.position_prev->x + mPosOffsetPrev.x;
235 return mFollowArg.position_prev->y + mPosOffsetPrev.y;
241 return *
reinterpret_cast<sead::Vector2f*>(mFollowArg.position_prev) + mPosOffsetPrev;
246 return getPosX() + mTypeOffset.x;
251 return getPosY() + mTypeOffset.y;
256 return getPos() + mTypeOffset;
261 return getPosPrevX() + mTypeOffsetPrev.x;
266 return getPosPrevY() + mTypeOffsetPrev.y;
271 return getPosPrev() + mTypeOffsetPrev;
344 mFlag.setDirect(flag);
359 return mFlag.isOnBit(bit);
363
364
365
366
367
391 return actor_self->getSpeedVec().y > 0.0f;
397 return actor_self->getSpeedVec().y < 0.0f;
403 if (direction == cDirType_Right)
405 if (actor_self->getSpeedVec().x > 0.0f)
410 if (actor_self->getSpeedVec().x < 0.0f)
Definition ActorBgCollisionCheck.h:24
Definition ActorBgCollisionCheck.h:59
Definition ActorCollisionDrcTouchCallback.h:10
Definition BasicBgCollisionCheck.h:18
Definition BgCollision.h:19
virtual void onBgCheckDataChange(const u64 &bc_data)=0
LineNodeMgr< BgCollision > List
Definition BgCollision.h:417
List::Node mPoleListNode
Definition BgCollision.h:424
sead::Vector2f mPosOffset2
Definition BgCollision.h:428
u32 _154
Definition BgCollision.h:458
void setBgCheckData(const u64 &bc_data)
const sead::Vector2f & getTypeOffset() const
Definition BgCollision.h:207
Angle mAnglePrev
Definition BgCollision.h:444
List::Node mTouchDrcHoldListNode
Definition BgCollision.h:426
sead::BoundBox2f mAffectedArea
Definition BgCollision.h:427
const u64 & getBgCheckData() const
Definition BgCollision.h:327
Actor * getOwner() const
Definition BgCollision.h:166
CheckRevWall mCheckRevWall
Definition BgCollision.h:456
bool(* CheckRev)(Actor *, Actor *)
Definition BgCollision.h:26
List::Node _34
Definition BgCollision.h:422
Actor * mIgnoreActor
Definition BgCollision.h:432
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:429
bool isFlag(s32 bit) const
Definition BgCollision.h:357
const sead::Vector2f & getPosOffset() const
Definition BgCollision.h:192
Actor * getIgnoreActor() const
Definition BgCollision.h:177
BcList mBcListHead
Definition BgCollision.h:446
List::Node mNonSolidListNode
Definition BgCollision.h:421
sead::Vector2f mPosOffset
Definition BgCollision.h:434
sead::Vector2f mTypeOffset
Definition BgCollision.h:438
void setCheckRev(CheckRev check_rev_foot, CheckRev check_rev_head, CheckRevWall check_rev_wall)
Definition BgCollision.h:375
sead::Vector2f mPosOffsetPrev
Definition BgCollision.h:435
Type
Definition BgCollision.h:90
@ cType_AirshipHand
Definition BgCollision.h:127
@ cType_Fence
Definition BgCollision.h:96
@ cType_Coin
Definition BgCollision.h:92
@ cType_BlockUsed
Definition BgCollision.h:103
@ cType_Vine
Definition BgCollision.h:97
@ cType_UnknownLiquid
Definition BgCollision.h:109
@ cType_SpineCoaster
Definition BgCollision.h:130
@ cType_SwingingVine
Definition BgCollision.h:118
@ cType_GrrrolPassage
Definition BgCollision.h:124
@ cType_Wood
Definition BgCollision.h:116
@ cType_SpikesUp
Definition BgCollision.h:125
@ cType_GreenCoin
Definition BgCollision.h:93
@ cType_QuestionBlockBig
Definition BgCollision.h:100
@ cType_BlueCoin
Definition BgCollision.h:94
@ cType_RedBlock
Definition BgCollision.h:106
@ cType_Cloud
Definition BgCollision.h:117
@ cType_Ice
Definition BgCollision.h:121
@ cType_WoodBlock
Definition BgCollision.h:104
@ cType_WaterGeyser
Definition BgCollision.h:128
@ cType_Quicksand
Definition BgCollision.h:113
@ cType_RopeLadder
Definition BgCollision.h:120
@ cType_SwingingChain
Definition BgCollision.h:119
@ cType_Carpet
Definition BgCollision.h:114
@ cType_DonutBlock
Definition BgCollision.h:107
@ cType_Poison
Definition BgCollision.h:112
@ cType_StreamCurrent
Definition BgCollision.h:126
@ cType_BlockUsedBig
Definition BgCollision.h:102
@ cType_BrickBlock
Definition BgCollision.h:99
@ cType_BoostBlock
Definition BgCollision.h:108
@ cType_BreakableIce
Definition BgCollision.h:122
@ cType_Leaves
Definition BgCollision.h:115
@ cType_CoinOutline
Definition BgCollision.h:95
@ cType_Urchin
Definition BgCollision.h:131
@ cType_Water
Definition BgCollision.h:110
@ cType_QuestionBlock
Definition BgCollision.h:98
@ cType_BreakableIce2
Definition BgCollision.h:123
@ cType_Normal
Definition BgCollision.h:91
@ cType_Unknown10
Definition BgCollision.h:129
@ cType_BrickBlockBig
Definition BgCollision.h:101
@ cType_InvisibleBlock
Definition BgCollision.h:132
@ cType_StoneBlock
Definition BgCollision.h:105
@ cType_Lava
Definition BgCollision.h:111
const sead::Vector2f & getPosOffset2() const
Definition BgCollision.h:197
void(* CallbackWall)(BgCollision *, ActorBgCollisionCheck *, u8 direction)
Definition BgCollision.h:24
T * getOwner() const
Definition BgCollision.h:172
BcList mBcListWallL
Definition BgCollision.h:448
void setFlag(u32 flag)
Definition BgCollision.h:342
void resetFlag(u32 mask)
Definition BgCollision.h:347
sead::Vector2f getTypePos() const
Definition BgCollision.h:254
virtual bool checkPointInsideOrWithinDistance(const sead::Vector2f &p, f32 distance) const =0
void clearFlag()
Definition BgCollision.h:352
BcList mBcListWallR
Definition BgCollision.h:447
const FollowArg & getFollowArg() const
Definition BgCollision.h:182
List::Node mCoinListNode
Definition BgCollision.h:423
const BcList & getBcListWallR() const
Definition BgCollision.h:299
sead::Vector2f mTypeOffsetPrev
Definition BgCollision.h:439
void setAttr(BgUnitCode::Attr attr)
List::Node mTouchDrcCheckNoDamageListNode
Definition BgCollision.h:425
sead::Vector2f & getTypeOffset()
Definition BgCollision.h:202
f32 getPosPrevX() const
Definition BgCollision.h:228
u64 mBgCheckData
Definition BgCollision.h:450
LineNodeMgr< ActorBgCollisionCheck > BcList
Definition BgCollision.h:21
sead::Vector2f getPos() const
Definition BgCollision.h:222
void setCallback(Callback callback_foot, Callback callback_head, CallbackWall callback_wall)
Register callbacks for interacting with a sensor of another actor.
Definition BgCollision.h:368
CheckRev mCheckRevFoot
Definition BgCollision.h:454
void releaseBcFoot(ActorBgCollisionCheck *bc_check)
Type mType
Definition BgCollision.h:449
sead::Vector2f mRotPivotOffsetPrev
Definition BgCollision.h:437
void setHitType(BgUnitCode::HitType hit_type)
BcList mBcListFoot
Definition BgCollision.h:445
void setAngle(Angle angle)
Definition BgCollision.h:284
f32 getTypePosY() const
Definition BgCollision.h:249
f32 getPosX() const
Definition BgCollision.h:212
const BcList & getBcListFoot() const
Definition BgCollision.h:289
Type getType() const
Definition BgCollision.h:323
List::Node mActiveListNode
Definition BgCollision.h:419
Callback mCallbackFoot
Definition BgCollision.h:451
Actor * mOwner
Definition BgCollision.h:431
virtual bool checkAreaActor(ActorBgCollisionCheckResult *, sead::Vector2f *, sead::Vector2f *, u8 direction, ActorBgCollisionCheck *)=0
bool(* CheckRevWall)(Actor *, Actor *, u8 direction)
Definition BgCollision.h:27
sead::Vector2f getTypePosPrev() const
Definition BgCollision.h:269
const BcList & getBcListHead() const
Definition BgCollision.h:294
static bool CheckRevUpperSpeed(Actor *actor_self, Actor *actor_other)
Definition BgCollision.h:389
sead::Vector2f & getPosOffset()
Definition BgCollision.h:187
static bool CheckRevUnderSpeed(Actor *actor_self, Actor *actor_other)
Definition BgCollision.h:395
f32 getTypePosPrevY() const
Definition BgCollision.h:264
sead::BitFlag32 mCheckRevFlag
Definition BgCollision.h:430
void setSlipAttr(BgUnitCode::SlipAttr slip_attr)
static bool CheckRevSideSpeed(Actor *actor_self, Actor *actor_other, u8 direction)
Definition BgCollision.h:401
sead::Vector2f getPosPrev() const
Definition BgCollision.h:238
Angle mAngle
Definition BgCollision.h:443
CheckRev mCheckRevHead
Definition BgCollision.h:455
f32 getPosPrevY() const
Definition BgCollision.h:233
sead::Matrix22f mRotMtx
Definition BgCollision.h:442
FollowArg mFollowArg
Definition BgCollision.h:433
bool mIsInactive
Definition BgCollision.h:440
f32 getTypePosX() const
Definition BgCollision.h:244
f32 getPosY() const
Definition BgCollision.h:217
const BcList & getBcListWallL() const
Definition BgCollision.h:304
const sead::BoundBox2f getAffectedArea() const
Definition BgCollision.h:161
virtual bool checkPointInside(bool *on_edge, const sead::Vector2f &p) const =0
Callback mCallbackHead
Definition BgCollision.h:452
List::Node mSolidListNode
Definition BgCollision.h:420
virtual bool vf5C(u32 *)=0
BgCollisionCat mCategory
Definition BgCollision.h:441
sead::Vector2f addDokanMoveDiff(sead::Vector2f pos)
void setDrcTouchCallback(ActorCollisionDrcTouchCallback *drc_touch_callback)
Definition BgCollision.h:382
void(* Callback)(BgCollision *, ActorBgCollisionCheck *)
Definition BgCollision.h:23
void entryBcFoot(ActorBgCollisionCheck *bc_check)
bool isInactive() const
Definition BgCollision.h:274
ActorCollisionDrcTouchCallback * mDrcTouchCallback
Definition BgCollision.h:457
bool isEntryBcFoot(ActorBgCollisionCheck *bc_check) const
sead::Vector2f mRotPivotOffset
Definition BgCollision.h:436
f32 getTypePosPrevX() const
Definition BgCollision.h:259
Angle getAngle() const
Definition BgCollision.h:279
CallbackWall mCallbackWall
Definition BgCollision.h:453
Definition BgCollisionCheckResult.h:19
Definition BgCollision.h:39
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:41
sead::Vector2f left_top_offset
Definition BgCollision.h:42
sead::Vector2f pos_offset
Definition BgCollision.h:40
sead::Vector2f right_under_offset
Definition BgCollision.h:43
Angle angle
Definition BgCollision.h:44
Definition BgCollision.h:49
f32 radius
Definition BgCollision.h:53
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:51
Angle angle
Definition BgCollision.h:54
sead::Vector2f pos_offset
Definition BgCollision.h:50
sead::Vector2f center_offset
Definition BgCollision.h:52
Definition BgCollision.h:59
sead::Vector2f center_offset
Definition BgCollision.h:62
sead::Vector2f half_size
Definition BgCollision.h:63
Angle angle
Definition BgCollision.h:64
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:61
sead::Vector2f pos_offset
Definition BgCollision.h:60
Definition BgCollision.h:30
const sead::Vector2f * points
Definition BgCollision.h:33
Angle angle
Definition BgCollision.h:34
sead::Vector2f pos_offset
Definition BgCollision.h:31
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:32
Definition BgCollision.h:69
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:71
sead::Vector2f pos_offset
Definition BgCollision.h:70
Angle angle
Definition BgCollision.h:73
sead::Vector2f points[2]
Definition BgCollision.h:72
Definition BgCollision.h:78
f32 range
Definition BgCollision.h:83
sead::Vector2f start_point
Definition BgCollision.h:81
Angle * line_angles
Definition BgCollision.h:84
f32 line_length
Definition BgCollision.h:82
sead::Vector2f rot_pivot_offset
Definition BgCollision.h:80
Angle angle
Definition BgCollision.h:85
sead::Vector2f pos_offset
Definition BgCollision.h:79