82 FLAG_10 = BIT_FLAG(10),
83 FLAG_11 = BIT_FLAG(11),
84 FLAG_12 = BIT_FLAG(12),
85 FLAG_13 = BIT_FLAG(13),
86 FLAG_14 = BIT_FLAG(14),
87 FLAG_15 = BIT_FLAG(15),
88 FLAG_16 = BIT_FLAG(16),
89 FLAG_17 = BIT_FLAG(17),
90 FLAG_18 = BIT_FLAG(18),
91 FLAG_19 = BIT_FLAG(19),
92 FLAG_20 = BIT_FLAG(20),
93 FLAG_21 = BIT_FLAG(21),
94 FLAG_22 = BIT_FLAG(22),
95 FLAG_23 = BIT_FLAG(23),
96 FLAG_24 = BIT_FLAG(24),
97 FLAG_25 = BIT_FLAG(25),
98 FLAG_26 = BIT_FLAG(26),
99 FLAG_27 = BIT_FLAG(27),
100 FLAG_28 = BIT_FLAG(28),
101 FLAG_29 = BIT_FLAG(29),
102 FLAG_30 = BIT_FLAG(30),
105 FLAG_0 | FLAG_2 | FLAG_4,
107 FLAG_1 | FLAG_3 | FLAG_5,
109 FLAG_13 | FLAG_14 | FLAG_15 | FLAG_16 | FLAG_14 |
110 FLAG_15 | FLAG_16 | FLAG_17 | FLAG_18 | FLAG_19 |
113 FLAG_26 | FLAG_27 | FLAG_28 | FLAG_29
119 WATER_CHECK_WATER_BUBBLE,
132 bool checkHead(
unsigned long);
133 s16 getSakaAngle(u8);
134 s16 getSakaMoveAngle(u8);
135 Flag_e checkWall(
float *);
136 Flag_e checkWallEnm(
float *);
138 Flag_e checkFootEnm();
139 u16 getWallAttr(
int);
145 bool hasSensorFoot() {
return mpSensorFoot !=
nullptr; }
146 bool hasSensorHead() {
return mpSensorHead !=
nullptr; }
147 bool hasSensorWall() {
return mpSensorWall !=
nullptr; }
149 bool checkRoofPlayer(
const mVec3_c *,
float *);
151 int checkDokanLR(mVec3_c *, u8,
int *,
float,
float);
152 int checkDokanDown(mVec3_c *,
int *);
153 int checkDokanUp(mVec3_c *,
int *);
154 void setRideOnObjBg(dBg_ctr_c *,
const mVec3_c &);
155 bool checkWallPlayer(
const mVec3_c *,
const mVec3_c *,
float *);
156 u32 checkBgPlr(dActor_c *);
158 short getHeadSakaMoveAngle(u8 direction);
159 void clearBgcSaveAll();
161 bool getSakaUpDown(u8 direction);
162 short getSakaAngleBySpeed(
float);
165 u32 getFlags()
const {
return mFlags; }
167 u32 isWallR() {
return mFlags & FLAG_WALL_R; }
168 u32 isWallL() {
return mFlags & FLAG_WALL_L; }
169 u32 isWall() {
return mFlags & (FLAG_WALL_R | FLAG_WALL_L); }
170 u32 isWall(u8 dir) {
return mFlags & (FLAG_WALL_R << dir); }
172 u32 isHead() {
return mFlags & FLAG_HEAD; }
173 u32 isCollision() {
return mFlags & (FLAG_WALL_L | FLAG_WALL_R | FLAG_FOOT | FLAG_HEAD); }
176 sBcSensorIf_c *mpSensorFoot;
177 sBcSensorIf_c *mpSensorHead;
178 sBcSensorIf_c *mpSensorWall;
180 mVec3_c *mpOwnerLastPos;
181 mVec3_c *mpOwnerSpeed;
183 mVec2_c mOwnerPosDelta;
190 dActor_c *mpNoHitActor;
191 dBg_ctr_c *mpCtrHead;
192 dBg_ctr_c *mpCtrFoot;
193 dBg_ctr_c *mpCtrWall;
194 dBg_ctr_c *mpCtrWalls[2];
195 dBc_c *mPrevTrigBelowSensor;
196 dBc_c *mPrevTrigAboveSensor;
197 dBc_c *mPrevTrigAdjSensor;
198 dBc_c *mPrevTrigAdjSensorForDirection[2];
199 dBg_ctr_c *mLinkW[2];
210 mAng mAdjacentSlopeAngle;
212 dBg_ctr_c *mpFenceCollision;
225 static int checkWaterDepth(
float,
float, u8, u8,
float *);
226 static WATER_TYPE_e checkWater(
float,
float, u8,
float *);
228 static u32 checkBg(
float,
float, u8, u8,
unsigned long);
229 static u32 checkWireNet(
float x,
float y,
unsigned char layer);
230 static u32 checkGround(
const mVec3_c *,
float *, u8, u8, s8);
231 static u32 checkGround(
const mVec3_c *,
float *,
int *, u8, u8, s8);
232 static bool checkGroundAngle(
const mVec3_c *,
float *, s16 *, u8, u8, s8,
int *,
int);
233 static u32 checkGroundHalf(
const mVec3_c *,
float *, u8, u8);
234 static u32 checkTenjou(
const mVec3_c *,
float *, u8, u8);
235 static u32 checkWall(
const mVec3_c *,
const mVec3_c *,
float *, u8, u8, dActor_c **);
236 static u32 getUnitType(
float x,
float y, u8 layer);
237 static u32 getUnitKind(
float x,
float y, u8 layer);
238 static void getAirWaterHitPos(mVec2_c *);
239 static void getAirWaterHitAngle(
short *);