New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ActorBgCollisionPlayerCheck.h
Go to the documentation of this file.
1#pragma once
2
3#include <collision/ActorBgCollisionCheck.h>
4
5// vtbl Address: 0x100417C0
7{
8 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: Deleted
9 // getRuntimeTypeInfoStatic()::typeInfo Address: Deleted
10 SEAD_RTTI_OVERRIDE(ActorBgCollisionPlayerCheck, ActorBgCollisionCheck)
11
12public:
20 static_assert(sizeof(VineType) == 4);
21
22 enum Flag
23 {
24 cFlag_IsVine = 1 << 0,
27 cFlag_IsMame = 1 << 3
28 };
29
38 static_assert(sizeof(PcCheckArea) == 0x14);
39
41 {
43 };
44
45public:
46 // Address: 0x021934C0
48 // Address: 0x021936A8
50
51 // Address: 0x02193714
53 // Address: 0x02193718
55 // Address: 0x0219371C
57
58 void setCarryPlayerNo(s8 player_no)
59 {
60 mCarryPlayerNo = player_no;
61 }
62
63 bool isSakaReverse() const
64 {
65 return mFlag.isOn(cFlag_IsSakaReverse);
66 }
67
68 void onMame()
69 {
70 mFlag.set(cFlag_IsMame);
71 }
72
73 void offMame()
74 {
75 mFlag.reset(cFlag_IsMame);
76 }
77
78 bool isMame() const
79 {
80 return mFlag.isOn(cFlag_IsMame);
81 }
82
83 // Address: 0x02193828
84 bool checkDokanDown(sead::Vector3f* pos, s32* dst_next_goto_no);
85 // Address: 0x02193B38
86 bool checkDokanUp(sead::Vector3f* pos, s32* dst_next_goto_no);
87 // Address: 0x02193E54
88 bool checkDokanLR(sead::Vector3f* pos, s32* dst_next_goto_no, DirType direction, const Sensor& wall);
89
90 bool isMameDokan() const
91 {
92 return mIsMameDokan;
93 }
94
95 // Address: 0x021941D8
96 VineResult checkVine(const Sensor& vine_sensor);
97
98 // Address: 0x02194F18
99 bool checkPole(const sead::Vector2f& offset);
100
101 // Address: 0x0219587C
102 Actor* getOwnerAtRevCheck(f32 bg_collision_pos_y) const override;
103 // Address: 0x021958E8
104 Actor* getOwnerAtHit(const BgCollision& bg_collision, u8 direction) const override;
105 // Address: 0x02195830
106 s8* vf4C(f32) const override;
107
109 {
110 return mVineType;
111 }
112
114 {
115 return mVineBgCollision;
116 }
117
118 void setPcCheckArea(const PcCheckArea& area)
119 {
120 mPcCheckArea = area;
121 }
122
123 // Address: 0x021950D0
124 bool checkGround(const sead::Vector3f& pos, f32 check_distance, BgCollisionCheckResultArea* res = nullptr);
125
127
128 // Address: 0x02195160
129 bool checkWall(const sead::Vector3f& pos, f32 speed_x, f32* hit_pos_x = nullptr, bool use_callback = false);
130
131 // Address: 0x021952D4
132 bool checkTenjou(const sead::Vector3f& pos, f32 check_distance, f32* hit_pos_y = nullptr, bool no_invis_block = false);
133
134 // Address: 0x02195658
135 bool checkQuicksand(const sead::Vector3f& pos, f32* hit_pos_y = nullptr);
136
137 // Address: 0x0219574C
138 bool checkKani(s32* type, f32* hit_pos_y, const sead::Vector3f& pos, f32 check_distance);
139
140private:
149 u32 _1524[(0x15A0 - 0x1524) / sizeof(u32)];
150};
151static_assert(sizeof(ActorBgCollisionPlayerCheck) == 0x15A0);
Definition ActorBgCollisionPlayerCheck.h:7
bool checkWall(const sead::Vector3f &pos, f32 speed_x, f32 *hit_pos_x=nullptr, bool use_callback=false)
bool checkGround(const sead::Vector3f &pos, f32 check_distance, BgCollisionCheckResultArea *res=nullptr)
BgCollision * getVineBgCollision() const
Definition ActorBgCollisionPlayerCheck.h:113
bool checkQuicksand(const sead::Vector3f &pos, f32 *hit_pos_y=nullptr)
void offMame()
Definition ActorBgCollisionPlayerCheck.h:73
bool checkKani(s32 *type, f32 *hit_pos_y, const sead::Vector3f &pos, f32 check_distance)
BgCollision * mVineBgCollision
Definition ActorBgCollisionPlayerCheck.h:146
bool isMameDokan() const
Definition ActorBgCollisionPlayerCheck.h:90
List::Node _14e0
Definition ActorBgCollisionPlayerCheck.h:141
sead::BitFlag16 mFlag
Definition ActorBgCollisionPlayerCheck.h:143
bool checkDokanDown(sead::Vector3f *pos, s32 *dst_next_goto_no)
VineResult checkVine(const Sensor &vine_sensor)
void onMame()
Definition ActorBgCollisionPlayerCheck.h:68
bool checkTenjou(const sead::Vector3f &pos, f32 check_distance, f32 *hit_pos_y=nullptr, bool no_invis_block=false)
VineType getVineType() const
Definition ActorBgCollisionPlayerCheck.h:108
bool mIsMameDokan
Definition ActorBgCollisionPlayerCheck.h:144
Actor * getOwnerAtHit(const BgCollision &bg_collision, u8 direction) const override
Flag
Definition ActorBgCollisionPlayerCheck.h:23
@ cFlag_IsVine
Definition ActorBgCollisionPlayerCheck.h:24
@ cFlag_IsWallSlide
Definition ActorBgCollisionPlayerCheck.h:25
@ cFlag_IsSakaReverse
Definition ActorBgCollisionPlayerCheck.h:26
@ cFlag_IsMame
Definition ActorBgCollisionPlayerCheck.h:27
bool isSakaReverse() const
Definition ActorBgCollisionPlayerCheck.h:63
virtual ~ActorBgCollisionPlayerCheck()
bool checkDokanUp(sead::Vector3f *pos, s32 *dst_next_goto_no)
PcCheckArea mPcCheckArea
Definition ActorBgCollisionPlayerCheck.h:147
PcCheckArea mPcCheckAreaPrev
Definition ActorBgCollisionPlayerCheck.h:148
s8 mCarryPlayerNo
Definition ActorBgCollisionPlayerCheck.h:142
bool isMame() const
Definition ActorBgCollisionPlayerCheck.h:78
void setPcCheckArea(const PcCheckArea &area)
Definition ActorBgCollisionPlayerCheck.h:118
bool checkDokanLR(sead::Vector3f *pos, s32 *dst_next_goto_no, DirType direction, const Sensor &wall)
Actor * getOwnerAtRevCheck(f32 bg_collision_pos_y) const override
void setCarryPlayerNo(s8 player_no)
Definition ActorBgCollisionPlayerCheck.h:58
s8 * vf4C(f32) const override
bool checkPole(const sead::Vector2f &offset)
u32 _1524[(0x15A0 - 0x1524)/sizeof(u32)]
Definition ActorBgCollisionPlayerCheck.h:149
VineType mVineType
Definition ActorBgCollisionPlayerCheck.h:145
void atFrameStart() override
Definition ActorBgCollisionPlayerCheck.h:31
f32 center_y
Definition ActorBgCollisionPlayerCheck.h:33
f32 half_size_x
Definition ActorBgCollisionPlayerCheck.h:36
f32 half_size_y1
Definition ActorBgCollisionPlayerCheck.h:34
f32 half_size_y2
Definition ActorBgCollisionPlayerCheck.h:35
f32 center_x
Definition ActorBgCollisionPlayerCheck.h:32
Definition ActorBgCollisionPlayerCheck.h:41
u16 flag
Definition ActorBgCollisionPlayerCheck.h:42