1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7class CollisionParts;
8class CollisionPartsFilterBase;
9class HitSensor;
10} // namespace al
11
12class IUsePlayerCollision;
13class IUsePlayerHeightCheck;
14class PlayerConst;
15
16namespace rs {
17
18f32 getGroundHeight(const IUsePlayerHeightCheck*);
19
20const sead::Vector3f& getCollidedWallPos(const IUsePlayerCollision*);
21const sead::Vector3f& getCollidedWallNormal(const IUsePlayerCollision*);
22const al::CollisionParts* getCollidedWallCollisionParts(const IUsePlayerCollision*);
23
24const sead::Vector3f& getCollidedGroundPos(const IUsePlayerCollision*);
25const sead::Vector3f& getCollidedGroundNormal(const IUsePlayerCollision*);
26const al::CollisionParts* getCollidedGroundCollisionParts(const IUsePlayerCollision*);
27
28const sead::Vector3f& getCollidedCeilingPos(const IUsePlayerCollision*);
29const sead::Vector3f& getCollidedCeilingNormal(const IUsePlayerCollision*);
30const al::CollisionParts* getCollidedCeilingCollisionParts(const IUsePlayerCollision*);
31
32bool isCollidedGround(const IUsePlayerCollision*);
33bool isCollidedGroundRunAngle(const al::LiveActor*, const IUsePlayerCollision*, const PlayerConst*);
34bool isOnGroundSlopeSlideStart(const al::LiveActor*, const IUsePlayerCollision*,
35 const PlayerConst*);
36bool isOnGroundForceSlideCode(const al::LiveActor*, const IUsePlayerCollision*, const PlayerConst*);
37bool isOnGroundForceRollingCode(const al::LiveActor*, const IUsePlayerCollision*);
38bool isOnGroundLessAngle(const al::LiveActor*, const IUsePlayerCollision*, f32);
39bool isPlayerOnGround(const al::LiveActor*);
40bool isOnGround(const al::LiveActor*, const IUsePlayerCollision*);
41bool isJustLand(const IUsePlayerCollision*);
42void calcGroundNormalOrGravityDir(sead::Vector3f*, const al::LiveActor*,
43 const IUsePlayerCollision*);
44bool isCollisionCodeSandSink(const IUsePlayerCollision*);
45bool isCollidedWall(const IUsePlayerCollision*);
46bool isCollidedCeiling(const IUsePlayerCollision*);
47bool isActionCodeNoWallGrab(const IUsePlayerCollision*);
48bool isActionCodeNoActionWall(const IUsePlayerCollision*);
49
50bool isCollisionCodeGrabCeilAny(const IUsePlayerCollision*);
51bool isCollisionCodeGrabCeilWall(const IUsePlayerCollision*);
52bool isCollisionCodeGrabCeilCeiling(const IUsePlayerCollision*);
53bool isCollisionCodeGrabCeilGrround(const IUsePlayerCollision*);
54
55void setColliderFilterCollisionParts(IUsePlayerCollision*, const al::CollisionPartsFilterBase*);
56
57bool reboundVelocityFromCollision(al::LiveActor*, const IUsePlayerCollision*, f32, f32, f32);
58al::HitSensor* tryGetCollidedCeilingSensor(const IUsePlayerCollision*);
59
60bool isOnGroundSlopeSlideEnd(const al::LiveActor*, const IUsePlayerCollision*, const PlayerConst*);
61bool isAutoRunOnGroundSkateCode(const al::LiveActor*, const IUsePlayerCollision*, f32);
62
63} // namespace rs
64