1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/HostIO/HioNode.h"
6
7namespace al {
8
9class CameraTargetBase : public IUseHioNode {
10public:
11 CameraTargetBase();
12
13 virtual const char* getTargetName() const = 0;
14 virtual void calcTrans(sead::Vector3f* trans) const = 0;
15
16 virtual void calcSide(sead::Vector3f* side) const {}
17
18 virtual void calcUp(sead::Vector3f* up) const {}
19
20 virtual void calcFront(sead::Vector3f* front) const {}
21
22 virtual void calcGravity(sead::Vector3f* gravity) const { *gravity = {0.0f, -1.0f, 0.0f}; }
23
24 virtual void calcVelocity(sead::Vector3f* velocity) const {}
25
26 virtual bool isCollideGround() const { return false; }
27
28 virtual bool isInWater() const { return false; }
29
30 virtual bool isInMoonGravity() const { return false; }
31
32 virtual bool isClimbPole() const { return false; }
33
34 virtual bool isGrabCeil() const { return false; }
35
36 virtual bool isWallCatch() const { return false; }
37
38 virtual bool isInvalidMoveByInput() const { return false; }
39
40 virtual bool isEnableEndAfterInterpole() const { return false; }
41
42 virtual void update() {}
43
44 virtual f32 getRequestDistance() const { return -1.0f; }
45
46private:
47 bool mIsActiveTarget = false;
48};
49
50static_assert(sizeof(CameraTargetBase) == 0x10);
51
52} // namespace al
53