1#pragma once
2
3#include <gfx/seadCamera.h>
4#include <math/seadMatrix.h>
5#include <math/seadQuat.h>
6#include <math/seadVector.h>
7
8namespace al {
9class CameraPoser;
10struct CameraStartInfo;
11struct CameraObjectRequestInfo;
12class IUseCollision;
13class PlacementInfo;
14} // namespace al
15
16namespace alCameraPoserFunction {
17class CameraCollisionHitResult;
18
19void getViewIndex(const al::CameraPoser*);
20sead::LookAtCamera* getLookAtCamera(const al::CameraPoser*);
21void getProjectionSead(const al::CameraPoser*);
22void getProjection(const al::CameraPoser*);
23void getProjectionMtx(const al::CameraPoser*);
24f32 getNear(const al::CameraPoser*);
25f32 getFar(const al::CameraPoser*);
26f32 getAspect(const al::CameraPoser*);
27const sead::Vector3f& getPreCameraPos(const al::CameraPoser*);
28const sead::Vector3f& getPreLookAtPos(const al::CameraPoser*);
29void getPreUpDir(const al::CameraPoser*);
30void getPreFovyDegree(const al::CameraPoser*);
31void getPreFovyRadian(const al::CameraPoser*);
32bool isPrePriorityDemo(const al::CameraStartInfo&);
33bool isPrePriorityDemo2(const al::CameraStartInfo&);
34bool isPrePriorityDemoTalk(const al::CameraStartInfo&);
35bool isPrePriorityDemoAll(const al::CameraStartInfo&);
36bool isPrePriorityEntranceAll(const al::CameraStartInfo&);
37bool isPrePriorityPlayer(const al::CameraStartInfo&);
38bool isEqualPreCameraName(const al::CameraStartInfo&, const char*);
39bool isPreCameraFixAbsolute(const al::CameraStartInfo&);
40bool isInvalidCollidePreCamera(const al::CameraStartInfo&);
41bool isInvalidKeepPreCameraDistance(const al::CameraStartInfo&);
42bool isInvalidKeepPreCameraDistanceIfNoCollide(const al::CameraStartInfo&);
43bool isValidResetPreCameraPose(const al::CameraStartInfo&);
44bool isValidKeepPreSelfCameraPose(const al::CameraStartInfo&);
45void getPreCameraSwingAngleH(const al::CameraStartInfo&);
46void getPreCameraSwingAngleV(const al::CameraStartInfo&);
47void getPreCameraMaxSwingAngleH(const al::CameraStartInfo&);
48void getPreCameraMaxSwingAngleV(const al::CameraStartInfo&);
49bool isExistAreaAngleH(const al::CameraStartInfo&);
50bool isExistAreaAngleV(const al::CameraStartInfo&);
51void getAreaAngleH(const al::CameraStartInfo&);
52void getAreaAngleV(const al::CameraStartInfo&);
53bool isExistNextPoseByPreCamera(const al::CameraStartInfo&);
54void getNextAngleHByPreCamera(const al::CameraStartInfo&);
55void getNextAngleVByPreCamera(const al::CameraStartInfo&);
56void calcCameraPose(sead::Quatf*, const al::CameraPoser*);
57void calcLookDir(sead::Vector3f*, const al::CameraPoser*);
58void calcCameraDir(sead::Vector3f*, const al::CameraPoser*);
59void calcCameraDirH(sead::Vector3f*, const al::CameraPoser*);
60void calcLookDirH(sead::Vector3f*, const al::CameraPoser*);
61void calcSideDir(sead::Vector3f*, const al::CameraPoser*);
62void calcPreCameraDir(sead::Vector3f*, const al::CameraPoser*);
63void calcPreCameraDirH(sead::Vector3f*, const al::CameraPoser*);
64void calcPreLookDir(sead::Vector3f*, const al::CameraPoser*);
65void calcPreLookDirH(sead::Vector3f*, const al::CameraPoser*);
66void calcPreCameraAngleH(const al::CameraPoser*);
67void calcPreCameraAngleV(const al::CameraPoser*);
68void setLookAtPosToTarget(al::CameraPoser*);
69void calcTargetTrans(sead::Vector3f*, const al::CameraPoser*);
70void setLookAtPosToTargetAddOffset(al::CameraPoser*, const sead::Vector3f&);
71void setCameraPosToTarget(al::CameraPoser*);
72void setCameraPosToTargetAddOffset(al::CameraPoser*, const sead::Vector3f&);
73void calcTargetTransWithOffset(sead::Vector3f*, const al::CameraPoser*);
74void calcTargetVelocity(sead::Vector3f*, const al::CameraPoser*);
75void calcTargetVelocityH(sead::Vector3f*, const al::CameraPoser*);
76void calcTargetUp(sead::Vector3f*, const al::CameraPoser*);
77void calcTargetSpeedV(const al::CameraPoser*);
78void calcTargetPose(sead::Quatf*, const al::CameraPoser*);
79void calcTargetFront(sead::Vector3f*, const al::CameraPoser*);
80void calcTargetSide(sead::Vector3f*, const al::CameraPoser*);
81void calcTargetGravity(sead::Vector3f*, const al::CameraPoser*);
82void calcTargetSpeedH(const al::CameraPoser*);
83void calcTargetJumpSpeed(const al::CameraPoser*);
84void calcTargetFallSpeed(const al::CameraPoser*);
85bool isChangeTarget(const al::CameraPoser*);
86bool tryGetTargetRequestDistance(f32*, const al::CameraPoser*);
87bool tryGetBossDistanceCurve(const al::CameraPoser*);
88bool tryGetEquipmentDistanceCurve(const al::CameraPoser*);
89bool isExistCollisionUnderTarget(const al::CameraPoser*);
90void getUnderTargetCollisionPos(const al::CameraPoser*);
91void getUnderTargetCollisionNormal(const al::CameraPoser*);
92bool isExistSlopeCollisionUnderTarget(const al::CameraPoser*);
93bool isExistWallCollisionUnderTarget(const al::CameraPoser*);
94bool tryCalcSlopeCollisionDownFrontDirH(sead::Vector3f*, const al::CameraPoser*);
95void getSlopeCollisionUpSpeed(const al::CameraPoser*);
96void getSlopeCollisionDownSpeed(const al::CameraPoser*);
97bool isExistSubTarget(const al::CameraPoser*);
98void checkValidTurnToSubTarget(const al::CameraPoser*);
99void calcSubTargetBack(sead::Vector3f*, const al::CameraPoser*);
100void calcSubTargetTrans(sead::Vector3f*, const al::CameraPoser*);
101bool isChangeSubTarget(const al::CameraPoser*);
102void calcSubTargetFront(sead::Vector3f*, const al::CameraPoser*);
103void getSubTargetRequestDistance(const al::CameraPoser*);
104void getSubTargetTurnSpeedRate1(const al::CameraPoser*);
105void getSubTargetTurnSpeedRate2(const al::CameraPoser*);
106void getSubTargetTurnRestartStep(const al::CameraPoser*);
107bool tryCalcSubTargetTurnBrakeDistanceRate(f32*, const al::CameraPoser*);
108bool isValidSubTargetTurnV(const al::CameraPoser*);
109bool isValidSubTargetResetAfterTurnV(const al::CameraPoser*);
110void clampAngleSubTargetTurnRangeV(f32*, const al::CameraPoser*);
111void initCameraVerticalAbsorber(al::CameraPoser*);
112void initCameraVerticalAbsorberNoCameraPosAbsorb(al::CameraPoser*);
113void getCameraVerticalAbsorbPosUp(const al::CameraPoser*);
114void getCameraVerticalAbsorbPosDown(const al::CameraPoser*);
115void liberateVerticalAbsorb(al::CameraPoser*);
116void stopUpdateVerticalAbsorb(al::CameraPoser*);
117void stopUpdateVerticalAbsorbForSnapShotMode(al::CameraPoser*, const sead::Vector3f&);
118void restartUpdateVerticalAbsorb(al::CameraPoser*);
119void validateVerticalAbsorbKeepInFrame(al::CameraPoser*);
120void invalidateVerticalAbsorbKeepInFrame(al::CameraPoser*);
121void setVerticalAbsorbKeepInFrameScreenOffsetUp(al::CameraPoser*, f32);
122void setVerticalAbsorbKeepInFrameScreenOffsetDown(al::CameraPoser*, f32);
123void initCameraArrowCollider(al::CameraPoser*);
124void initCameraArrowColliderWithoutThroughPassCollision(al::CameraPoser*);
125void initCameraMoveLimit(al::CameraPoser*);
126void initCameraAngleCtrl(al::CameraPoser*);
127void initCameraAngleCtrlWithRelativeH(al::CameraPoser*);
128void initCameraDefaultAngleRangeV(al::CameraPoser*, f32, f32);
129void setCameraStartAngleV(al::CameraPoser*, f32);
130void setCameraAngleV(al::CameraPoser*, f32);
131void getCameraAngleH(const al::CameraPoser*);
132void getCameraAngleV(const al::CameraPoser*);
133void initAngleSwing(al::CameraPoser*);
134bool isValidAngleSwing(const al::CameraPoser*);
135void initCameraOffsetCtrlPreset(al::CameraPoser*);
136void getOffset(const al::CameraPoser*);
137void initGyroCameraCtrl(al::CameraPoser*);
138void resetGyro(al::CameraPoser*);
139void calcCameraGyroPose(const al::CameraPoser*, sead::Vector3f*, sead::Vector3f*, sead::Vector3f*);
140void getGyroFront(al::CameraPoser*);
141void getGyroAngleV(al::CameraPoser*);
142void getGyroAngleH(al::CameraPoser*);
143void setGyroLimitAngleV(al::CameraPoser*, f32, f32);
144void setGyroSensitivity(al::CameraPoser*, f32, f32);
145void reduceGyroSencitivity(al::CameraPoser*);
146void stopUpdateGyro(al::CameraPoser*);
147void restartUpdateGyro(al::CameraPoser*);
148bool isStopUpdateGyro(const al::CameraPoser*);
149bool isTargetCollideGround(const al::CameraPoser*);
150bool isTargetInWater(const al::CameraPoser*);
151bool isTargetInMoonGravity(const al::CameraPoser*);
152bool isTargetClimbPole(const al::CameraPoser*);
153bool isTargetGrabCeil(const al::CameraPoser*);
154bool isTargetInvalidMoveByInput(const al::CameraPoser*);
155bool isTargetEnableEndAfterInterpole(const al::CameraPoser*);
156bool isTargetWallCatch(const al::CameraPoser*);
157bool isSnapShotMode(const al::CameraPoser*);
158void initSnapShotCameraCtrl(al::CameraPoser*);
159void initSnapShotCameraCtrlZoomAutoReset(al::CameraPoser*);
160void initSnapShotCameraCtrlZoomRollMove(al::CameraPoser*);
161void validateSnapShotCameraLookAtOffset(al::CameraPoser*);
162void validateSnapShotCameraZoomFovy(al::CameraPoser*);
163void validateSnapShotCameraRoll(al::CameraPoser*);
164void updateSnapShotCameraCtrl(al::CameraPoser*);
165void startResetSnapShotCameraCtrl(al::CameraPoser*, s32);
166void setSnapShotMaxZoomOutFovyDegree(al::CameraPoser*, f32);
167void getSnapShotRollDegree(const al::CameraPoser*);
168void getSnapShotLookAtOffset(const al::CameraPoser*);
169bool isOffVerticalAbsorb(const al::CameraPoser*);
170void onVerticalAbsorb(al::CameraPoser*);
171void offVerticalAbsorb(al::CameraPoser*);
172void invalidateCameraBlur(al::CameraPoser*);
173bool isRequestStopVerticalAbsorb(const al::CameraObjectRequestInfo&);
174bool isRequestResetPosition(const al::CameraObjectRequestInfo&);
175bool isRequestResetAngleV(const al::CameraObjectRequestInfo&);
176bool isRequestDownToDefaultAngleBySpeed(const al::CameraObjectRequestInfo&);
177bool isRequestUpToTargetAngleBySpeed(const al::CameraObjectRequestInfo&);
178void getRequestTargetAngleV(const al::CameraObjectRequestInfo&);
179void getRequestAngleSpeed(const al::CameraObjectRequestInfo&);
180bool isRequestMoveDownAngleV(const al::CameraObjectRequestInfo&);
181bool isRequestSetAngleV(const al::CameraObjectRequestInfo&);
182void getRequestAngleV(const al::CameraObjectRequestInfo&);
183bool isInvalidCollider(const al::CameraPoser*);
184void validateCollider(al::CameraPoser*);
185void invalidateCollider(al::CameraPoser*);
186void validateCtrlSubjective(al::CameraPoser*);
187void invalidateChangeSubjective(al::CameraPoser*);
188void invalidateKeepDistanceNextCamera(al::CameraPoser*);
189void invalidateKeepDistanceNextCameraIfNoCollide(al::CameraPoser*);
190void invalidatePreCameraEndAfterInterpole(al::CameraPoser*);
191bool isInvalidPreCameraEndAfterInterpole(const al::CameraPoser*);
192bool isSceneCameraFirstCalc(const al::CameraPoser*);
193bool isActiveInterpole(const al::CameraPoser*);
194bool isInvalidEndEntranceCamera(const al::CameraPoser*);
195bool isPause(const al::CameraPoser*);
196void checkFirstCameraCollisionArrow(sead::Vector3f*, sead::Vector3f*, const al::IUseCollision*,
197 const sead::Vector3f&, const sead::Vector3f&);
198void checkFirstCameraCollisionArrow(CameraCollisionHitResult*, const al::IUseCollision*,
199 const sead::Vector3f&, const sead::Vector3f&);
200void checkFirstCameraCollisionArrowOnlyCeiling(sead::Vector3f*, sead::Vector3f*,
201 const al::IUseCollision*, const sead::Vector3f&,
202 const sead::Vector3f&);
203void checkCameraCollisionMoveSphere(sead::Vector3f*, const al::IUseCollision*,
204 const sead::Vector3f&, const sead::Vector3f&, f32);
205f32 calcZoneRotateAngleH(f32, const al::CameraPoser*);
206f32 calcZoneRotateAngleH(f32, const sead::Matrix34f&);
207f32 calcZoneInvRotateAngleH(f32, const sead::Matrix34f&);
208void multVecZone(sead::Vector3f*, const sead::Vector3f&, const al::CameraPoser*);
209void multVecInvZone(sead::Vector3f*, const sead::Vector3f&, const al::CameraPoser*);
210void rotateVecZone(sead::Vector3f*, const sead::Vector3f&, const al::CameraPoser*);
211void calcOffsetCameraKeepInFrameV(sead::Vector3f*, sead::LookAtCamera*, const sead::Vector3f&,
212 const al::CameraPoser*, f32, f32);
213void makeCameraKeepInFrameV(sead::LookAtCamera*, const sead::Vector3f&, const al::CameraPoser*, f32,
214 f32);
215void initCameraRail(al::CameraPoser*, const al::PlacementInfo&, const char*);
216bool tryGetCameraRailArg(f32*, const al::PlacementInfo&, const char*, const char*);
217// void getCameraRailPointObjId(al::CameraPoser const*, s32);
218bool tryFindNearestLimitRailKeeper(const al::CameraPoser*, const sead::Vector3f&);
219void calcCameraRotateStick(sead::Vector2f*, const al::CameraPoser*);
220f32 calcCameraRotateStickH(const al::CameraPoser*);
221f32 calcCameraRotateStickV(const al::CameraPoser*);
222f32 calcCameraRotateStickPower(const al::CameraPoser*);
223s32 getStickSensitivityLevel(const al::CameraPoser*);
224f32 getStickSensitivityScale(const al::CameraPoser*);
225bool isValidGyro(const al::CameraPoser*);
226s32 getGyroSensitivityLevel(const al::CameraPoser*);
227f32 getGyroSensitivityScale(const al::CameraPoser*);
228bool isTriggerCameraResetRotate(const al::CameraPoser*);
229bool isHoldCameraZoom(const al::CameraPoser*);
230bool isHoldCameraSnapShotZoomIn(const al::CameraPoser*);
231bool isHoldCameraSnapShotZoomOut(const al::CameraPoser*);
232bool isHoldCameraSnapShotRollLeft(const al::CameraPoser*);
233bool isHoldCameraSnapShotRollRight(const al::CameraPoser*);
234bool tryCalcCameraSnapShotMoveStick(sead::Vector2f*, const al::CameraPoser*);
235bool isPlayerTypeFlyer(const al::CameraPoser*);
236bool isPlayerTypeHighSpeedMove(const al::CameraPoser*);
237bool isPlayerTypeHighJump(const al::CameraPoser*);
238bool isPlayerTypeNotTouchGround(const al::CameraPoser*);
239bool isOnRideObj(const al::CameraPoser*);
240} // namespace alCameraPoserFunction
241