1#pragma once
2
3#include <basis/seadTypes.h>
4#include <gfx/seadCamera.h>
5#include <math/seadVector.h>
6
7namespace al {
8class LiveActor;
9class CameraTicket;
10class IUseCamera;
11struct ActorInitInfo;
12struct CameraStartInfo;
13class CameraDistanceCurve;
14} // namespace al
15
16namespace rs {
17bool isEnableStartSubjectiveCamera(const al::LiveActor* actor);
18al::CameraTicket* initFollowLimitCamera(const al::IUseCamera* user,
19 const al::ActorInitInfo& actorInitInfo, const char*);
20al::CameraTicket* initParallel2DCamera(const al::IUseCamera* user,
21 const al::ActorInitInfo& actorInitInfo, const char*);
22void invalidateFollowLimitCameraAutoResetLowAngleV(al::CameraTicket* ticket);
23void updateCameraPosFromDistanceAndAngleHV(sead::Vector3f* newPos, const sead::Vector3f& cameraPos,
24 f32 distance, f32 angleY, f32 angleH);
25bool isPreCameraFollowOrParallel(const al::CameraStartInfo& cameraStartInfo);
26al::CameraTicket* initGetMoonCamera(const al::IUseCamera* user, const al::LiveActor* moon,
27 const al::ActorInitInfo& actorInitInfo, const char* name,
28 sead::Vector3f*, sead::Vector3f*, sead::Vector3f*,
29 sead::LookAtCamera* lookAtCamera);
30al::CameraTicket* initWarpCheckpointCamera(const al::IUseCamera* user,
31 const al::LiveActor* checkpoint,
32 const al::ActorInitInfo& actorInitInfo, const char* name,
33 sead::Vector3f*, sead::Vector3f*, sead::Vector3f*);
34bool requestSetCameraAngleV(const al::LiveActor* actor, f32 requestAngleV, s32 poseUpdaterIdx);
35bool requestResetCameraPosition(const al::LiveActor* actor, s32 poseUpdaterIdx);
36bool requestResetCameraAngleV(const al::LiveActor* actor, s32 poseUpdaterIdx);
37bool requestDownToDefaultCameraAngleBySpeed(const al::LiveActor* actor, f32 requestAngleSpeed,
38 s32 poseUpdaterIdx);
39bool requestUpToTargetCameraAngleBySpeed(const al::LiveActor* actor, f32 targetAngleV,
40 f32 requestAngleSpeed, s32 poseUpdaterIdx);
41bool requestMoveDownCameraAngleV(const al::LiveActor* actor, s32 poseUpdaterIdx);
42bool requestRiseCameraAngleByPlayerCollideJumpCode(const al::LiveActor* actor);
43bool requestCameraTurnToFront(const al::LiveActor* actor, f32, f32, s32 poseUpdaterIdx);
44bool requestCameraTurnToFront(const al::LiveActor* actor, const sead::Vector3f& trans, f32, f32,
45 s32 poseUpdaterIdx);
46void setEquipmentCameraDistanceCurve(al::LiveActor* actor, const al::CameraDistanceCurve* curve);
47void resetEquipmentCameraDistanceCurve(al::LiveActor* actor);
48void setBossCameraDistanceCurve(al::LiveActor* actor, const al::CameraDistanceCurve* curve);
49void resetBossCameraDistanceCurve(al::LiveActor* actor);
50void setKoopaShellCameraDistanceCurve(al::LiveActor* actor);
51void resetKoopaShellCameraDistanceCurve(al::LiveActor* actor);
52void setTRexPatrolCameraDistanceCurve(al::LiveActor* actor);
53void resetTRexPatrolCameraDistanceCurve(al::LiveActor* actor);
54} // namespace rs
55