1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7class AreaObj;
8} // namespace al
9class PlayerModelHolder;
10
11class PlayerAreaChecker {
12public:
13 PlayerAreaChecker(const al::LiveActor* player, const PlayerModelHolder* modelHolder);
14 bool isInWater(const sead::Vector3f& pos) const;
15 bool isInWaterDouble(const sead::Vector3f& pos, f32 gravityFactor) const;
16 bool isInWaterWallCatch(const sead::Vector3f& pos, f32 gravityFactor) const;
17 bool isInWaterIce(const sead::Vector3f& pos) const;
18 bool isInWaterIceDouble(const sead::Vector3f& pos, f32 gravityFactor) const;
19 bool isInWet(const sead::Vector3f& pos) const;
20 bool isInRise(const sead::Vector3f& pos) const;
21 bool isInHackCancel(const sead::Vector3f& pos) const;
22 bool isInRecovery(const al::AreaObj** area, const sead::Vector3f& pos) const;
23 bool isInRecoveryBan(const sead::Vector3f& pos) const;
24 bool isInWallClimbBan(const sead::Vector3f& pos) const;
25 bool isInForceRecovery(sead::Vector3f* targetPos, sead::Vector3f* targetUp,
26 const al::AreaObj** area, const sead::Vector3f& pos) const;
27 bool isInShadowLength(f32* shadowLength, const sead::Vector3f& pos) const;
28 bool isInCarryBan(const sead::Vector3f& pos) const;
29 const al::AreaObj* tryFindStainArea(const sead::Vector3f& pos) const;
30 const al::AreaObj* tryFindInvalidateInputFall(const sead::Vector3f& pos) const;
31
32private:
33 const al::LiveActor* mPlayer;
34 const PlayerModelHolder* mModelHolder;
35};
36
37static_assert(sizeof(PlayerAreaChecker) == 0x10);
38