1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class LiveActor;
7}
8class PlayerConst;
9class PlayerInput;
10class IUsePlayerCollision;
11
12class PlayerActionSlopeSlideControl {
13public:
14 PlayerActionSlopeSlideControl(al::LiveActor* player, const PlayerConst* pConst,
15 const PlayerInput* input, const IUsePlayerCollision* collider);
16 void setup();
17 void setupCutSlideOppositeDir();
18 f32 update(f32 accel, f32 brake, f32 against, f32 anglePowerMax, f32 maxSpeed, f32 sideAccel,
19 f32 sideBrake, f32 sideMaxSpeed, f32 turnDegree, f32 gravity, bool isRolling);
20
21 const sead::Vector3f& getDirSlide() const { return mDirSlide; }
22
23 const sead::Vector3f& getGroundNormal() const { return mGroundNormal; }
24
25 const sead::Vector3f& getHorizontalVelocity() const { return mHorizontalVelocity; }
26
27private:
28 al::LiveActor* mPlayer;
29 const PlayerConst* mConst;
30 const PlayerInput* mInput;
31 const IUsePlayerCollision* mCollision;
32 sead::Vector3f mDirSlide = sead::Vector3f::zero;
33 sead::Vector3f mGroundNormal = sead::Vector3f::zero;
34 sead::Vector3f mHorizontalVelocity = sead::Vector3f::zero;
35};
36
37static_assert(sizeof(PlayerActionSlopeSlideControl) == 0x48);
38