New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ActorCollisionCheck.h
Go to the documentation of this file.
1#pragma once
2
3#include <prim/seadRuntimeTypeInfo.h>
4#include <system/LineNodeMgr.h>
5
6#include <container/seadSafeArray.h>
7#include <heap/seadDisposer.h>
8#include <math/seadBoundBox.h>
9#include <math/seadVector.h>
10#include <prim/seadBitFlag.h>
11
13{
14 cCcLineKind_0 = 1 << 0,
15 cCcLineKind_1 = 1 << 1,
17};
18
19class Actor;
21
22class ActorCollisionCheck : public sead::IDisposer // vtbl Address: 0x10041C18
23{
24public:
25 struct Vec2 // POD variant
26 {
29 };
30 static_assert(sizeof(Vec2) == 8);
31
33 {
36 cShapeType_DaikeiUD, // Vertical Trapezoid
37 cShapeType_DaikeiLR // Horizontal Trapezoid
38 };
39 static_assert(sizeof(ShapeType) == 4);
40
60 static_assert(sizeof(Kind) == 4);
61 static_assert(cKind_Num == 15);
62
86 static_assert(sizeof(TargetKind) == 4);
87
121 static_assert(sizeof(Attack) == 4);
122
156 static_assert(sizeof(DamageFrom) == 4);
157
159 {
161 cStatus_NoSameActor = 1 << 1, // i.e., do not call this instance's callback, and the callback can be null
162 cStatus_NoPassInfo = 1 << 2, // If set, this instance does not trigger other instances
165 //
166 //
172 cStatus_MoveKill = 1 << 12, // Used by objects like thrown enemies, thwomp, grrrol, pendulum, woochan, big icicle, boom boom, final koopa fire, fliprus snowball, crasher, etc...
173
175 };
176 static_assert(sizeof(Status) == 4);
177
178 typedef void (*CallBack)(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
179
181 {
185 Kind kind; // Type of the owner of this instance
186 Attack attack; // Type of attack this instance performs
187 TargetKind vs_kind; // Mask of owner types to interact with
188 DamageFrom vs_damage; // Mask of attack types to receive
189 Status status; // Sets allowed interactions, such as being pick-able
191
192 // Address: 0x10041BC0
194 };
195 static_assert(sizeof(CollisionData) == 0x2C);
196
197 enum Info
198 {
200 };
201 static_assert(sizeof(Info) == 4);
202
203public:
204 // Address: 0x0219A960
206 // Address: 0x0219AB90
208
209public:
210 // Address: 0x0219AC24
212
213public:
214 // Address: 0x0219AEC0
215 void clear();
216
217 // Address: 0x0219AF1C
218 void set(Actor* owner, const CollisionData& collision_data, ActorCollisionDrcTouchCallback* drc_touch_callback = nullptr);
219 // Address: 0x0219B010
220 void set(Actor* owner, const CollisionData& collision_data, const sead::BitFlag8& collision_mask, ActorCollisionDrcTouchCallback* drc_touch_callback = nullptr);
221 // Address: 0x0219B054
222 void set(Actor* owner, const CollisionData& collision_data, const sead::BitFlag8& collision_mask, u8 layer, ActorCollisionDrcTouchCallback* drc_touch_callback = nullptr);
223
225 {
226 return mCollisionData.shape_type;
227 }
228
230 {
231 mCollisionData.shape_type = type;
232 }
233
234 bool isShapeType(ShapeType type) const
235 {
236 return mCollisionData.shape_type == type;
237 }
238
240 {
241 return mCollisionData.center_offset.x;
242 }
243
244 void setCenterOffsetX(f32 center_offset_x)
245 {
246 mCollisionData.center_offset.x = center_offset_x;
247 }
248
250 {
251 return mCollisionData.center_offset.y;
252 }
253
254 void setCenterOffsetY(f32 center_offset_y)
255 {
256 mCollisionData.center_offset.y = center_offset_y;
257 }
258
259 const Vec2& getCenterOffset() const
260 {
261 return mCollisionData.center_offset;
262 }
263
264 void setCenterOffset(const Vec2& center_offset)
265 {
266 mCollisionData.center_offset = center_offset;
267 }
268
269 void setCenterOffset(f32 center_offset_x, f32 center_offset_y)
270 {
271 mCollisionData.center_offset.x = center_offset_x;
272 mCollisionData.center_offset.y = center_offset_y;
273 }
274
275 void setCenterOffset(const sead::Vector2f& center_offset)
276 {
277 setCenterOffset(center_offset.x, center_offset.y);
278 }
279
281 {
282 return mCollisionData.half_size.x;
283 }
284
285 void setHalfSizeX(f32 half_size_x)
286 {
287 mCollisionData.half_size.x = half_size_x;
288 }
289
291 {
292 return mCollisionData.half_size.y;
293 }
294
295 void setHalfSizeY(f32 half_size_y)
296 {
297 mCollisionData.half_size.y = half_size_y;
298 }
299
300 const Vec2& getHalfSize() const
301 {
302 return mCollisionData.half_size;
303 }
304
305 void setHalfSize(const Vec2& half_size)
306 {
307 mCollisionData.half_size = half_size;
308 }
309
310 void setHalfSize(f32 half_size_x, f32 half_size_y)
311 {
312 mCollisionData.half_size.x = half_size_x;
313 mCollisionData.half_size.y = half_size_y;
314 }
315
316 void setHalfSize(const sead::Vector2f& half_size)
317 {
318 setHalfSize(half_size.x, half_size.y);
319 }
320
321 void setSizeOffset(const sead::Vector2f& half_size, const sead::Vector2f& center_offset)
322 {
323 setHalfSize(half_size);
324 setCenterOffset(center_offset);
325 }
326
327 Kind getKind() const
328 {
329 return mCollisionData.kind;
330 }
331
332 // Address: 0x0219B0A8
333 void setKind(Kind kind);
334
335 bool isKind(Kind kind) const
336 {
337 return mCollisionData.kind == kind;
338 }
339
341 {
342 return mCollisionData.vs_kind;
343 }
344
345 // Address: 0x0219B164
346 void setVsKind(TargetKind vs_kind);
347 // Address: 0x0219B250
348 void onVsKind(TargetKind vs_kind);
349 // Address: 0x0219B338
350 void offVsKind(TargetKind vs_kind);
351
352 bool hasVsKind(TargetKind vs_kind) const
353 {
354 return mCollisionData.vs_kind & vs_kind;
355 }
356
358 {
359 return mCollisionData.attack;
360 }
361
362 void setAttack(Attack attack)
363 {
364 mCollisionData.attack = attack;
365 }
366
367 bool isAttack(Attack attack) const
368 {
369 return mCollisionData.attack == attack;
370 }
371
373 {
374 return mCollisionData.vs_damage;
375 }
376
377 void setDamage(DamageFrom vs_damage)
378 {
379 mCollisionData.vs_damage = vs_damage;
380 }
381
382 void onDamage(DamageFrom vs_damage)
383 {
384 mCollisionData.vs_damage = DamageFrom(mCollisionData.vs_damage | vs_damage);
385 }
386
387 void offDamage(DamageFrom vs_damage)
388 {
389 mCollisionData.vs_damage = DamageFrom(mCollisionData.vs_damage & ~vs_damage);
390 }
391
392 bool hasDamage(DamageFrom vs_damage) const
393 {
394 return mCollisionData.vs_damage & vs_damage;
395 }
396
398 {
399 return mCollisionData.status;
400 }
401
402 void setStatus(Status status)
403 {
404 mCollisionData.status = status;
405 }
406
407 void onStatus(Status status)
408 {
409 mCollisionData.status = Status(mCollisionData.status | status);
410 }
411
412 void offStatus(Status status)
413 {
414 mCollisionData.status = Status(mCollisionData.status & ~status);
415 }
416
417 bool hasStatus(Status status)
418 {
419 return mCollisionData.status & status;
420 }
421
422 void setIndex(u32 index)
423 {
424 mIndex = index;
425 }
426
427 void setLine(const sead::BitFlag8& line_kind)
428 {
429 mCollisionMask = line_kind;
430 }
431
432 void setLayer(u8 layer)
433 {
434 mLayer = layer;
435 }
436
438 {
439 mDrcTouchCallback = drc_touch_callback;
440 }
441
442 // Address: 0x0219B434
443 f32 getTopPos() const;
444 // Address: 0x0219B450
446 // Address: 0x0219B46C
448 // Address: 0x0219B480
450 // Address: 0x0219B49C
452 // Address: 0x0219B4B8
454
456 {
457 return sead::Vector2f(getCenterPosX(), getCenterPosY());
458 }
459
461 {
462 return sead::Vector2f(
463 getLeftPos(),
464 getUnderPos()
465 );
466 }
467
469 {
470 return sead::Vector2f(
471 getRightPos(),
472 getTopPos()
473 );
474 }
475
477 {
478 return mOwner;
479 }
480
481 template <typename T>
482 T* getOwner() const
483 {
484 return sead::DynamicCast<T>(mOwner);
485 }
486
488 {
489 return mDrcTouchPos;
490 }
491
492 const sead::Vector2f& getHitPos() const
493 {
494 return mHitPos;
495 }
496
497 s32 getIndex() const
498 {
499 return static_cast<s32>(mIndex);
500 }
501
502 u8 getLayer() const
503 {
504 return mLayer;
505 }
506
507 void setCallBack(CallBack callback)
508 {
509 mCollisionData.callback = callback;
510 }
511
513 {
514 return mCollisionData.callback;
515 }
516
517 bool isDisableCallback() const
518 {
519 return mInfo & cInfo_NoHit;
520 }
521
523 {
524 mInfo &= ~cInfo_NoHit;
525 }
526
528 {
529 mInfo |= cInfo_NoHit;
530 }
531
532 bool isCollidable() const
533 {
534 return mCollisionMask.getDirect() != 0;
535 }
536
541
543 {
544 return mCollisionData;
545 }
546
547 f32 getDaikei(s32 index) const
548 {
549 return mDaikei[index];
550 }
551
552 void setDaikei(s32 index, f32 daikei)
553 {
554 mDaikei[index] = daikei;
555 }
556
558 {
559 return mMoveX[kind];
560 }
561
563 {
564 return mMoveY[kind];
565 }
566
568 {
569 return sead::BoundBox2f(
570 getMinPos(),
571 getMaxPos()
572 );
573 }
574
575 bool isOverlap(const ActorCollisionCheck& cc_other)
576 {
577 const sead::BoundBox2f& a = getBoundBox();
578 const sead::BoundBox2f& b = cc_other.getBoundBox();
579
580 const sead::Vector2f& min_a = a.getMin();
581 const sead::Vector2f& min_b = b.getMin();
582
583 const sead::Vector2f& max_a = a.getMax();
584 const sead::Vector2f& max_b = b.getMax();
585
586 return min_a.x < max_b.x && max_a.x > min_b.x &&
587 min_a.y < max_b.y && max_a.y > min_b.y;
588 }
589
590private:
592
598 Actor* mFriend; // Collisions with this are ignored
602 TargetKind mHit; // Owner types of others we've collided with
603 DamageFrom mAttacksPerformed; // Attacks performed on non-passive others
604 DamageFrom mAttacksReceived; // Attacks received from non-passive others
614};
615static_assert(sizeof(ActorCollisionCheck) == 0x128);
CcLineKind
Definition ActorCollisionCheck.h:13
@ cCcLineKind_1
Definition ActorCollisionCheck.h:15
@ cCcLineKind_0
Definition ActorCollisionCheck.h:14
@ cCcLineKind_2
Definition ActorCollisionCheck.h:16
Definition ActorCollisionCheck.h:23
const Vec2 & getCenterOffset() const
Definition ActorCollisionCheck.h:259
f32 getHalfSizeY() const
Definition ActorCollisionCheck.h:290
bool isOverlap(const ActorCollisionCheck &cc_other)
Definition ActorCollisionCheck.h:575
CollisionData mCollisionData
Definition ActorCollisionCheck.h:610
void disableCallback()
Definition ActorCollisionCheck.h:527
TargetKind getVsKind() const
Definition ActorCollisionCheck.h:340
Actor * mOwner
Definition ActorCollisionCheck.h:597
sead::BoundBox2f getBoundBox() const
Definition ActorCollisionCheck.h:567
const Vec2 & getHalfSize() const
Definition ActorCollisionCheck.h:300
void setHalfSize(const sead::Vector2f &half_size)
Definition ActorCollisionCheck.h:316
f32 getUnderPos() const
const sead::Vector2f & getDrcTouchPos() const
Definition ActorCollisionCheck.h:487
bool isShapeType(ShapeType type) const
Definition ActorCollisionCheck.h:234
void enableCallback()
Definition ActorCollisionCheck.h:522
f32 getCenterOffsetY() const
Definition ActorCollisionCheck.h:249
f32 getDaikei(s32 index) const
Definition ActorCollisionCheck.h:547
bool isAttack(Attack attack) const
Definition ActorCollisionCheck.h:367
bool hasDamage(DamageFrom vs_damage) const
Definition ActorCollisionCheck.h:392
ShapeType
Definition ActorCollisionCheck.h:33
@ cShapeType_Box
Definition ActorCollisionCheck.h:34
@ cShapeType_DaikeiLR
Definition ActorCollisionCheck.h:37
@ cShapeType_DaikeiUD
Definition ActorCollisionCheck.h:36
@ cShapeType_Circle
Definition ActorCollisionCheck.h:35
f32 getHalfSizeX() const
Definition ActorCollisionCheck.h:280
Status getStatus() const
Definition ActorCollisionCheck.h:397
void setIndex(u32 index)
Definition ActorCollisionCheck.h:422
void setCenterOffsetY(f32 center_offset_y)
Definition ActorCollisionCheck.h:254
ActorCollisionDrcTouchCallback * getDrcTouchCallback() const
Definition ActorCollisionCheck.h:537
f32 getTopPos() const
u8 getLayer() const
Definition ActorCollisionCheck.h:502
Info
Definition ActorCollisionCheck.h:198
@ cInfo_NoHit
Definition ActorCollisionCheck.h:199
void offVsKind(TargetKind vs_kind)
List::Node mExecuteNode
Definition ActorCollisionCheck.h:593
f32 getRightPos() const
void setCenterOffset(f32 center_offset_x, f32 center_offset_y)
Definition ActorCollisionCheck.h:269
void setHalfSizeY(f32 half_size_y)
Definition ActorCollisionCheck.h:295
DamageFrom mAttacksPerformed
Definition ActorCollisionCheck.h:603
void setHalfSize(f32 half_size_x, f32 half_size_y)
Definition ActorCollisionCheck.h:310
sead::Vector2f getCenterPos() const
Definition ActorCollisionCheck.h:455
List::Node mTouchDrcCheckNode
Definition ActorCollisionCheck.h:596
void setHalfSize(const Vec2 &half_size)
Definition ActorCollisionCheck.h:305
bool hasStatus(Status status)
Definition ActorCollisionCheck.h:417
void setCenterOffset(const Vec2 &center_offset)
Definition ActorCollisionCheck.h:264
void setStatus(Status status)
Definition ActorCollisionCheck.h:402
void(* CallBack)(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
Definition ActorCollisionCheck.h:178
ShapeType getShapeType() const
Definition ActorCollisionCheck.h:224
bool hasVsKind(TargetKind vs_kind) const
Definition ActorCollisionCheck.h:352
s32 getIndex() const
Definition ActorCollisionCheck.h:497
void onDamage(DamageFrom vs_damage)
Definition ActorCollisionCheck.h:382
f32 getRevisionY(Kind kind) const
Definition ActorCollisionCheck.h:562
void offStatus(Status status)
Definition ActorCollisionCheck.h:412
Kind getKind() const
Definition ActorCollisionCheck.h:327
void set(Actor *owner, const CollisionData &collision_data, ActorCollisionDrcTouchCallback *drc_touch_callback=nullptr)
Kind
Definition ActorCollisionCheck.h:42
@ cKind_Unk14
Definition ActorCollisionCheck.h:57
@ cKind_Item
Definition ActorCollisionCheck.h:48
@ cKind_Unk12
Definition ActorCollisionCheck.h:55
@ cKind_PlayerAttack
Definition ActorCollisionCheck.h:44
@ cKind_Yoshi
Definition ActorCollisionCheck.h:45
@ cKind_Num
Definition ActorCollisionCheck.h:58
@ cKind_PlayerBody
Definition ActorCollisionCheck.h:43
@ cKind_Balloon
Definition ActorCollisionCheck.h:47
@ cKind_Tama
Definition ActorCollisionCheck.h:49
@ cKind_DrcTouch
Definition ActorCollisionCheck.h:54
@ cKind_ChibiYoshi
Definition ActorCollisionCheck.h:52
@ cKind_GoalPole
Definition ActorCollisionCheck.h:51
@ cKind_Enemy
Definition ActorCollisionCheck.h:46
@ cKind_Unk13
Definition ActorCollisionCheck.h:56
@ cKind_Unk10
Definition ActorCollisionCheck.h:53
@ cKind_Killer
Definition ActorCollisionCheck.h:50
void setDamage(DamageFrom vs_damage)
Definition ActorCollisionCheck.h:377
u8 mInfo
Definition ActorCollisionCheck.h:608
void setLine(const sead::BitFlag8 &line_kind)
Definition ActorCollisionCheck.h:427
List::Node mTouchDrcHoldNode
Definition ActorCollisionCheck.h:595
bool isDisableCallback() const
Definition ActorCollisionCheck.h:517
u8 mLayer
Definition ActorCollisionCheck.h:607
f32 getRevisionX(Kind kind) const
Definition ActorCollisionCheck.h:557
const CollisionData & getCollisionData() const
Definition ActorCollisionCheck.h:542
void onStatus(Status status)
Definition ActorCollisionCheck.h:407
void setKind(Kind kind)
Actor * getOwner() const
Definition ActorCollisionCheck.h:476
ActorCollisionDrcTouchCallback * mDrcTouchCallback
Definition ActorCollisionCheck.h:609
void setAttack(Attack attack)
Definition ActorCollisionCheck.h:362
void setCenterOffset(const sead::Vector2f &center_offset)
Definition ActorCollisionCheck.h:275
void setDaikei(s32 index, f32 daikei)
Definition ActorCollisionCheck.h:552
void setVsKind(TargetKind vs_kind)
f32 getLeftPos() const
sead::Vector2f mDrcTouchPos
Definition ActorCollisionCheck.h:600
f32 getCenterOffsetX() const
Definition ActorCollisionCheck.h:239
sead::Vector2f getMaxPos() const
Definition ActorCollisionCheck.h:468
sead::UnsafeArray< f32, 4 > mDaikei
Definition ActorCollisionCheck.h:611
void set(Actor *owner, const CollisionData &collision_data, const sead::BitFlag8 &collision_mask, ActorCollisionDrcTouchCallback *drc_touch_callback=nullptr)
void setCenterOffsetX(f32 center_offset_x)
Definition ActorCollisionCheck.h:244
LineNodeMgr< ActorCollisionCheck > List
Definition ActorCollisionCheck.h:591
void setShapeType(ShapeType type)
Definition ActorCollisionCheck.h:229
sead::UnsafeArray< f32, cKind_Num > mMoveX
Definition ActorCollisionCheck.h:612
Attack
Definition ActorCollisionCheck.h:89
@ cAttack_ChibiYoshiAwa
Definition ActorCollisionCheck.h:114
@ cAttack_Spin
Definition ActorCollisionCheck.h:102
@ cAttack_Unk24
Definition ActorCollisionCheck.h:115
@ cAttack_YoshiFire
Definition ActorCollisionCheck.h:111
@ cAttack_Shell
Definition ActorCollisionCheck.h:100
@ cAttack_None
Definition ActorCollisionCheck.h:90
@ cAttack_Cannon
Definition ActorCollisionCheck.h:108
@ cAttack_SpinLiftUp
Definition ActorCollisionCheck.h:109
@ cAttack_PenguinSlip
Definition ActorCollisionCheck.h:101
@ cAttack_Unk27
Definition ActorCollisionCheck.h:118
@ cAttack_ChibiYoshiLight
Definition ActorCollisionCheck.h:117
@ cAttack_NetPunch
Definition ActorCollisionCheck.h:99
@ cAttack_Explode
Definition ActorCollisionCheck.h:105
@ cAttack_Intermittent
Definition ActorCollisionCheck.h:113
@ cAttack_Unk25
Definition ActorCollisionCheck.h:116
@ cAttack_IceBreak
Definition ActorCollisionCheck.h:95
@ cAttack_KoopaFire
Definition ActorCollisionCheck.h:97
@ cAttack_YoshiBullet
Definition ActorCollisionCheck.h:110
@ cAttack_Star
Definition ActorCollisionCheck.h:94
@ cAttack_YoshiEat
Definition ActorCollisionCheck.h:106
@ cAttack_Slip
Definition ActorCollisionCheck.h:96
@ cAttack_YoshiMouth
Definition ActorCollisionCheck.h:107
@ cAttack_IceBall
Definition ActorCollisionCheck.h:93
@ cAttack_FireBall
Definition ActorCollisionCheck.h:92
@ cAttack_HipAttack
Definition ActorCollisionCheck.h:98
@ cAttack_YoshiIce
Definition ActorCollisionCheck.h:112
@ cAttack_SpinFall
Definition ActorCollisionCheck.h:104
sead::Vector2f mHitPos
Definition ActorCollisionCheck.h:601
void onVsKind(TargetKind vs_kind)
DamageFrom
Definition ActorCollisionCheck.h:124
@ cDamageFrom_IceBreak
Definition ActorCollisionCheck.h:128
@ cDamageFrom_Unk27
Definition ActorCollisionCheck.h:151
@ cDamageFrom_Intermittent
Definition ActorCollisionCheck.h:146
@ cDamageFrom_SpinLiftUp
Definition ActorCollisionCheck.h:142
@ cDamageFrom_NetPunch
Definition ActorCollisionCheck.h:132
@ cDamageFrom_ChibiYoshiAwa
Definition ActorCollisionCheck.h:147
@ cDamageFrom_Cannon
Definition ActorCollisionCheck.h:141
@ cDamageFrom_Unk24
Definition ActorCollisionCheck.h:148
@ cDamageFrom_YoshiBullet
Definition ActorCollisionCheck.h:143
@ cDamageFrom_Explode
Definition ActorCollisionCheck.h:138
@ cDamageFrom_IceBall
Definition ActorCollisionCheck.h:126
@ cDamageFrom_Star
Definition ActorCollisionCheck.h:127
@ cDamageFrom_All
Definition ActorCollisionCheck.h:154
@ cDamageFrom_HipAttack
Definition ActorCollisionCheck.h:131
@ cDamageFrom_SpinFall
Definition ActorCollisionCheck.h:137
@ cDamageFrom_FireBall
Definition ActorCollisionCheck.h:125
@ cDamageFrom_Spin
Definition ActorCollisionCheck.h:135
@ cDamageFrom_PenguinSlip
Definition ActorCollisionCheck.h:134
@ cDamageFrom_YoshiEat
Definition ActorCollisionCheck.h:139
@ cDamageFrom_KoopaFire
Definition ActorCollisionCheck.h:130
@ cDamageFrom_ChibiYoshiLight
Definition ActorCollisionCheck.h:150
@ cDamageFrom_None
Definition ActorCollisionCheck.h:153
@ cDamageFrom_YoshiIce
Definition ActorCollisionCheck.h:145
@ cDamageFrom_YoshiMouth
Definition ActorCollisionCheck.h:140
@ cDamageFrom_Unk25
Definition ActorCollisionCheck.h:149
@ cDamageFrom_YoshiFire
Definition ActorCollisionCheck.h:144
@ cDamageFrom_Slip
Definition ActorCollisionCheck.h:129
@ cDamageFrom_Shell
Definition ActorCollisionCheck.h:133
Status
Definition ActorCollisionCheck.h:159
@ cStatus_NoSameActor
Definition ActorCollisionCheck.h:161
@ cStatus_NoPassInfo
Definition ActorCollisionCheck.h:162
@ cStatus_BurnerKill
Definition ActorCollisionCheck.h:169
@ cStatus_ForceGetRevision
Definition ActorCollisionCheck.h:170
@ cStatus_NoRevision
Definition ActorCollisionCheck.h:160
@ cStatus_None
Definition ActorCollisionCheck.h:174
@ cStatus_NoRevisionEnemy
Definition ActorCollisionCheck.h:171
@ cStatus_NoCheckLimit
Definition ActorCollisionCheck.h:164
@ cStatus_SlideKill
Definition ActorCollisionCheck.h:168
@ cStatus_FireKill
Definition ActorCollisionCheck.h:167
@ cStatus_MoveKill
Definition ActorCollisionCheck.h:172
@ cStatus_NoSameActorGroup
Definition ActorCollisionCheck.h:163
sead::BitFlag8 mCollisionMask
Definition ActorCollisionCheck.h:606
f32 getCenterPosX() const
TargetKind
Definition ActorCollisionCheck.h:64
@ cTargetKind_Balloon
Definition ActorCollisionCheck.h:69
@ cTargetKind_None
Definition ActorCollisionCheck.h:83
@ cTargetKind_Unk10
Definition ActorCollisionCheck.h:75
@ cTargetKind_Player
Definition ActorCollisionCheck.h:81
@ cTargetKind_Unk13
Definition ActorCollisionCheck.h:78
@ cTargetKind_Tama
Definition ActorCollisionCheck.h:71
@ cTargetKind_DrcTouch
Definition ActorCollisionCheck.h:76
@ cTargetKind_Unk14
Definition ActorCollisionCheck.h:79
@ cTargetKind_Item
Definition ActorCollisionCheck.h:70
@ cTargetKind_PlayerAttack
Definition ActorCollisionCheck.h:66
@ cTargetKind_Yoshi
Definition ActorCollisionCheck.h:67
@ cTargetKind_GoalPole
Definition ActorCollisionCheck.h:73
@ cTargetKind_ChibiYoshi
Definition ActorCollisionCheck.h:74
@ cTargetKind_Killer
Definition ActorCollisionCheck.h:72
@ cTargetKind_Enemy
Definition ActorCollisionCheck.h:68
@ cTargetKind_PlayerBody
Definition ActorCollisionCheck.h:65
@ cTargetKind_Unk12
Definition ActorCollisionCheck.h:77
@ cTargetKind_All
Definition ActorCollisionCheck.h:84
Attack getAttack() const
Definition ActorCollisionCheck.h:357
Actor * mFriend
Definition ActorCollisionCheck.h:598
T * getOwner() const
Definition ActorCollisionCheck.h:482
bool isKind(Kind kind) const
Definition ActorCollisionCheck.h:335
void setCallBack(CallBack callback)
Definition ActorCollisionCheck.h:507
const sead::Vector2f & getHitPos() const
Definition ActorCollisionCheck.h:492
TargetKind mHit
Definition ActorCollisionCheck.h:602
void setSizeOffset(const sead::Vector2f &half_size, const sead::Vector2f &center_offset)
Definition ActorCollisionCheck.h:321
f32 getCenterPosY() const
CallBack getCallBack() const
Definition ActorCollisionCheck.h:512
void setHalfSizeX(f32 half_size_x)
Definition ActorCollisionCheck.h:285
void setLayer(u8 layer)
Definition ActorCollisionCheck.h:432
DamageFrom mAttacksReceived
Definition ActorCollisionCheck.h:604
List::Node mCreateNode
Definition ActorCollisionCheck.h:594
static bool checkCollision(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void offDamage(DamageFrom vs_damage)
Definition ActorCollisionCheck.h:387
sead::Vector2f getMinPos() const
Definition ActorCollisionCheck.h:460
void setDrcTouchCallback(ActorCollisionDrcTouchCallback *drc_touch_callback)
Definition ActorCollisionCheck.h:437
bool isCollidable() const
Definition ActorCollisionCheck.h:532
u32 _48
Definition ActorCollisionCheck.h:599
DamageFrom getDamage() const
Definition ActorCollisionCheck.h:372
void set(Actor *owner, const CollisionData &collision_data, const sead::BitFlag8 &collision_mask, u8 layer, ActorCollisionDrcTouchCallback *drc_touch_callback=nullptr)
u32 mIndex
Definition ActorCollisionCheck.h:605
sead::UnsafeArray< f32, cKind_Num > mMoveY
Definition ActorCollisionCheck.h:613
~ActorCollisionCheck() override
Definition ActorCollisionDrcTouchCallback.h:10
Definition Actor.h:22
Definition ActorCollisionCheck.h:181
DamageFrom vs_damage
Definition ActorCollisionCheck.h:188
Vec2 center_offset
Definition ActorCollisionCheck.h:182
Vec2 half_size
Definition ActorCollisionCheck.h:183
Kind kind
Definition ActorCollisionCheck.h:185
TargetKind vs_kind
Definition ActorCollisionCheck.h:187
static const CollisionData cDefault
Definition ActorCollisionCheck.h:193
ShapeType shape_type
Definition ActorCollisionCheck.h:184
CallBack callback
Definition ActorCollisionCheck.h:190
Attack attack
Definition ActorCollisionCheck.h:186
Status status
Definition ActorCollisionCheck.h:189
Definition ActorCollisionCheck.h:26
f32 x
Definition ActorCollisionCheck.h:27
f32 y
Definition ActorCollisionCheck.h:28