63 FLAG_10 = BIT_FLAG(10),
64 FLAG_11 = BIT_FLAG(11),
65 FLAG_12 = BIT_FLAG(12),
66 FLAG_13 = BIT_FLAG(13),
67 FLAG_14 = BIT_FLAG(14),
68 FLAG_15 = BIT_FLAG(15),
69 FLAG_16 = BIT_FLAG(16),
70 FLAG_17 = BIT_FLAG(17),
71 FLAG_18 = BIT_FLAG(18),
72 FLAG_19 = BIT_FLAG(19),
73 FLAG_20 = BIT_FLAG(20),
74 FLAG_21 = BIT_FLAG(21),
75 FLAG_22 = BIT_FLAG(22),
76 FLAG_23 = BIT_FLAG(23),
77 FLAG_24 = BIT_FLAG(24),
78 FLAG_25 = BIT_FLAG(25),
79 FLAG_26 = BIT_FLAG(26),
80 FLAG_27 = BIT_FLAG(27),
81 FLAG_28 = BIT_FLAG(28),
82 FLAG_29 = BIT_FLAG(29),
83 FLAG_30 = BIT_FLAG(30),
86 FLAG_0 | FLAG_2 | FLAG_4,
88 FLAG_1 | FLAG_3 | FLAG_5,
90 FLAG_13 | FLAG_14 | FLAG_15 | FLAG_16 | FLAG_14 |
91 FLAG_15 | FLAG_16 | FLAG_17 | FLAG_18 | FLAG_19 |
94 FLAG_26 | FLAG_27 | FLAG_28 | FLAG_29
100 WATER_CHECK_WATER_BUBBLE,
113 bool checkHead(
unsigned long);
114 s16 getSakaAngle(u8);
115 s16 getSakaMoveAngle(u8);
116 Flag_e checkWall(
float *);
117 Flag_e checkWallEnm(
float *);
119 Flag_e checkFootEnm();
120 u16 getWallAttr(
int);
126 bool hasSensorFoot() {
return mpSensorFoot !=
nullptr; }
127 bool hasSensorHead() {
return mpSensorHead !=
nullptr; }
128 bool hasSensorWall() {
return mpSensorWall !=
nullptr; }
130 bool checkRoofPlayer(
const mVec3_c *,
float *);
132 int checkDokanLR(mVec3_c *, u8,
int *,
float,
float);
133 int checkDokanDown(mVec3_c *,
int *);
134 int checkDokanUp(mVec3_c *,
int *);
135 void setRideOnObjBg(dBg_ctr_c *,
const mVec3_c &);
136 bool checkWallPlayer(
const mVec3_c *,
const mVec3_c *,
float *);
137 u32 checkBgPlr(dActor_c *);
139 short getHeadSakaMoveAngle(u8 direction);
140 void clearBgcSaveAll();
142 bool getSakaUpDown(u8 direction);
143 short getSakaAngleBySpeed(
float);
146 u32 getFlags()
const {
return mFlags; }
148 u32 isWallR() {
return mFlags & FLAG_WALL_R; }
149 u32 isWallL() {
return mFlags & FLAG_WALL_L; }
150 u32 isWall() {
return mFlags & (FLAG_WALL_R | FLAG_WALL_L); }
151 u32 isWall(u8 dir) {
return mFlags & (FLAG_WALL_R << dir); }
153 u32 isHead() {
return mFlags & FLAG_HEAD; }
154 u32 isCollision() {
return mFlags & (FLAG_WALL_L | FLAG_WALL_R | FLAG_FOOT | FLAG_HEAD); }
157 sBcSensorIf_c *mpSensorFoot;
158 sBcSensorIf_c *mpSensorHead;
159 sBcSensorIf_c *mpSensorWall;
161 mVec3_c *mpOwnerLastPos;
162 mVec3_c *mpOwnerSpeed;
164 mVec2_c mOwnerPosDelta;
171 dActor_c *mpNoHitActor;
172 dBg_ctr_c *mpCtrHead;
173 dBg_ctr_c *mpCtrFoot;
174 dBg_ctr_c *mpCtrWall;
175 dBg_ctr_c *mpCtrWalls[2];
176 dBc_c *mPrevTrigBelowSensor;
177 dBc_c *mPrevTrigAboveSensor;
178 dBc_c *mPrevTrigAdjSensor;
179 dBc_c *mPrevTrigAdjSensorForDirection[2];
180 dBg_ctr_c *mLinkW[2];
191 mAng mAdjacentSlopeAngle;
193 dBg_ctr_c *mpFenceCollision;
206 static int checkWaterDepth(
float,
float, u8, u8,
float *);
207 static WATER_TYPE_e checkWater(
float,
float, u8,
float *);
209 static u32 checkBg(
float,
float, u8, u8,
unsigned long);
210 static u32 checkWireNet(
float x,
float y,
unsigned char layer);
211 static u32 checkGround(
const mVec3_c *,
float *, u8, u8, s8);
212 static u32 checkGround(
const mVec3_c *,
float *,
int *, u8, u8, s8);
213 static bool checkGroundAngle(
const mVec3_c *,
float *, s16 *, u8, u8, s8,
int *,
int);
214 static u32 checkGroundHalf(
const mVec3_c *,
float *, u8, u8);
215 static u32 checkTenjou(
const mVec3_c *,
float *, u8, u8);
216 static u32 checkWall(
const mVec3_c *,
const mVec3_c *,
float *, u8, u8, dActor_c **);
217 static u32 getUnitType(
float x,
float y, u8 layer);
218 static u32 getUnitKind(
float x,
float y, u8 layer);
219 static void getAirWaterHitPos(mVec2_c *);
220 static void getAirWaterHitAngle(
short *);