1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7class AreaObj;
8class IUseAreaObj;
9} // namespace al
10
11namespace rs {
12al::AreaObj* tryFind2DAreaObj(const al::IUseAreaObj* user, const sead::Vector3f& trans);
13al::AreaObj* tryFind2DAreaObj(const al::LiveActor* actor, sead::Vector3f*, sead::Vector3f*);
14void calc2DAreaLockDir(sead::Vector3f* lockDir, const al::AreaObj* area,
15 const sead::Vector3f& trans);
16void get2DAreaPos(sead::Vector3f* pos, const al::AreaObj* area);
17bool isIn2DArea(const al::LiveActor* actor, sead::Vector3f*, sead::Vector3f*);
18bool isInChangeStage(const al::LiveActor* actor, const sead::Vector3f* trans);
19bool isInWarpArea(const al::LiveActor* actor);
20bool isInLowGravityArea(const al::LiveActor* actor);
21bool isInItemVanishArea(const al::LiveActor* actor);
22bool tryFindStageMapAreaAndGetPlayerPoint(sead::Vector3f* playerPoint, const al::IUseAreaObj* user,
23 const sead::Vector3f& trans);
24bool calcFindWaterAreaSurfaceNoWaveByArrow(const al::LiveActor* actor, sead::Vector3f*,
25 sead::Vector3f*, const sead::Vector3f&,
26 const sead::Vector3f&);
27bool isPushOut2DAreaOpposite(const al::AreaObj* area);
28bool isFaceTo2DAreaPushOutDir(const al::AreaObj* area);
29void calc2DAreaFreeDir(sead::Vector3f* freeDir, const al::AreaObj* area,
30 const sead::Vector3f& trans);
31bool calc2DAreaGravity(sead::Vector3f* gravity, const al::AreaObj* area,
32 const sead::Vector3f& trans);
33bool calc2DAreaSnapPower(sead::Vector3f*, f32* snapPower, const al::AreaObj* area,
34 const sead::Vector3f& trans);
35bool calc2DAreaDistanceGravity(sead::Vector3f*, const al::AreaObj* area,
36 const sead::Vector3f& trans);
37f32 get2DAreaSurfaceDistance(const al::AreaObj* area);
38bool calc2DAreaSnapPowerSurfaceDistance(sead::Vector3f*, f32* snapPower, const al::AreaObj* area,
39 const sead::Vector3f& trans, f32 surfaceDistance);
40bool calcExtForceAreaVelocity(sead::Vector3f*, const al::IUseAreaObj* user,
41 const sead::Vector3f& trans, const sead::Vector3f&,
42 const sead::Vector3f& velocity);
43bool tryFindRecoveryTargetPosArea(bool* isNoCollideGround, sead::Vector3f* targetPos,
44 sead::Vector3f* targetRotate, const al::AreaObj** area,
45 const al::IUseAreaObj* user, const sead::Vector3f& trans);
46bool tryFindForceRecoveryArea(sead::Vector3f* targetPos, sead::Vector3f* targetRotate,
47 const al::AreaObj** area, const al::IUseAreaObj* user,
48 const sead::Vector3f& trans);
49} // namespace rs
50