1#pragma once
2
3#include <math/seadVector.h>
4#include <prim/seadSafeString.h>
5
6#include "Library/Camera/CameraSubTargetBase.h"
7
8namespace al {
9class LiveActor;
10
11class ActorCameraSubTarget : public CameraSubTargetBase {
12public:
13 ActorCameraSubTarget(const LiveActor* actor);
14
15 const char* getTargetName() const override;
16
17 void calcTrans(sead::Vector3f* trans) const override;
18 void calcSide(sead::Vector3f* side) const override;
19 void calcUp(sead::Vector3f* up) const override;
20 void calcFront(sead::Vector3f* front) const override;
21 void calcVelocity(sead::Vector3f* velocity) const override;
22
23 const LiveActor* getActor() const { return mActor; }
24
25 void setOffset(const sead::Vector3f* offset) { mOffset = offset; }
26
27private:
28 const LiveActor* mActor;
29 const sead::Vector3f* mOffset = nullptr;
30};
31
32static_assert(sizeof(ActorCameraSubTarget) == 0x28);
33
34class ActorBackAroundCameraSubTarget : public ActorCameraSubTarget {
35public:
36 ActorBackAroundCameraSubTarget(const LiveActor* actor);
37
38 void calcTrans(sead::Vector3f* trans) const override;
39
40 const char* getTargetName() const override { return mTargetName.cstr(); }
41
42private:
43 sead::FixedSafeString<128> mTargetName{""};
44};
45
46static_assert(sizeof(ActorBackAroundCameraSubTarget) == 0xC0);
47
48} // namespace al
49