1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class CollisionDirector;
7class CollisionPartsFilterBase;
8} // namespace al
9class PlayerCollisionCheckSphereMove;
10
11class PlayerCeilingCheck {
12public:
13 PlayerCeilingCheck(al::CollisionDirector* director);
14
15 void setupCeilingCheckNormal();
16 void update(const sead::Vector3f& trans, const sead::Vector3f& up, f32 tall,
17 f32 collisionRadiusSquat, f32 headClearance, f32 holdHeight);
18 void setupCeilingCheckGrab();
19 void setCollisionPartsFilter(const al::CollisionPartsFilterBase* filter);
20
21private:
22 PlayerCollisionCheckSphereMove* mCollisionCheckSphereMove = nullptr;
23 f32 mSafetyCeilSpace = 0.0f;
24 f32 mCeilCheckHeight = 0.0f;
25 bool mIsCeilingCheckNormal = true;
26 bool mIsCeilingCheckGrab = false;
27 bool mIsEnableStandUp = false;
28 bool mIsEnableHoldUp = false;
29 bool mIsPressedCeil = false;
30};
31
32static_assert(sizeof(PlayerCeilingCheck) == 0x18);
33