1#pragma once
2
3#include <math/seadQuat.h>
4#include <math/seadVector.h>
5
6#include "Library/Math/Axis.h"
7#include "Library/Nerve/NerveExecutor.h"
8
9namespace al {
10class LiveActor;
11struct ActorInitInfo;
12class SensorMsg;
13class HitSensor;
14
15class WheelMovement : public NerveExecutor {
16public:
17 WheelMovement(LiveActor* actor, const ActorInitInfo& info);
18
19 bool receiveMsg(LiveActor* actor, const SensorMsg* message, HitSensor* other, HitSensor* self);
20 void update(LiveActor* actor);
21 void updateRotate();
22 void updateActorPoseAndTrans(LiveActor* actor);
23 void reset();
24 void reset(LiveActor* actor);
25
26 const sead::Vector3f& getMoveDir() const { return mMoveDir; }
27
28 f32 get_48() const { return _48; }
29
30 f32 get_50() const { return _50; }
31
32 bool get_66() const { return _66; }
33
34private:
35 sead::Quatf _10 = sead::Quatf::unit;
36 sead::Quatf _20 = sead::Quatf::unit;
37 sead::Vector3f mMoveDir = sead::Vector3f::ez;
38 Axis mRotateAxis = Axis::None;
39 f32 mMoveEndDegree = 360.0f;
40 f32 _44 = 0.0f;
41 f32 _48 = 0.0f;
42 f32 mRotateAccel = 20.0f;
43 f32 _50 = 0.0f;
44 f32 _54 = 0.0f;
45 f32 mNoRotateWidth = 25.0f;
46 f32 _5c = 0.0f;
47 f32 _60 = 0.0f;
48 bool _64 = false;
49 bool mIsRailPlusDir = true;
50 bool _66 = false;
51};
52
53static_assert(sizeof(WheelMovement) == 0x68);
54} // namespace al
55