1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6namespace al {
7class LiveActor;
8
9void initActorPoseT(LiveActor* actor, const sead::Vector3f& trans);
10void setTrans(LiveActor* actor, const sead::Vector3f& trans);
11void initActorPoseTR(LiveActor* actor, const sead::Vector3f& trans, const sead::Vector3f& rotate);
12void setRotate(LiveActor* actor, const sead::Vector3f& rotate);
13void makeMtxSRT(sead::Matrix34f* mtx, const LiveActor* actor);
14void makeMtxRT(sead::Matrix34f* mtx, const LiveActor* actor);
15void makeMtxR(sead::Matrix34f* mtx, const LiveActor* actor);
16void calcAnimFrontGravityPos(LiveActor* actor, const sead::Vector3f& front);
17const sead::Vector3f& getGravity(const LiveActor* actor);
18const sead::Vector3f& getTrans(const LiveActor* actor);
19const sead::Vector3f& getScale(const LiveActor* actor);
20void copyPose(LiveActor* actor, const LiveActor* target);
21void updatePoseTrans(LiveActor* actor, const sead::Vector3f& trans);
22void updatePoseRotate(LiveActor* actor, const sead::Vector3f& rotate);
23void updatePoseQuat(LiveActor* actor, const sead::Quatf& quat);
24void updatePoseMtx(LiveActor* actor, const sead::Matrix34f* mtx);
25void calcSideDir(sead::Vector3f* side, const LiveActor* actor);
26void calcLeftDir(sead::Vector3f* left, const LiveActor* actor);
27void calcRightDir(sead::Vector3f* right, const LiveActor* actor);
28void calcUpDir(sead::Vector3f* up, const LiveActor* actor);
29void calcDownDir(sead::Vector3f* down, const LiveActor* actor);
30void calcFrontDir(sead::Vector3f* front, const LiveActor* actor);
31void calcBackDir(sead::Vector3f* back, const LiveActor* actor);
32void calcPoseDir(sead::Vector3f* side, sead::Vector3f* up, sead::Vector3f* front,
33 const LiveActor* actor);
34void calcQuat(sead::Quatf* quat, const LiveActor* actor);
35f32 calcDistanceSignLocalXDir(const LiveActor* actor, const sead::Vector3f& pos);
36f32 calcDistanceSignLocalYDir(const LiveActor* actor, const sead::Vector3f& pos);
37f32 calcDistanceSignLocalZDir(const LiveActor* actor, const sead::Vector3f& pos);
38f32 calcDistanceLocalXDir(const LiveActor* actor, const sead::Vector3f& pos);
39f32 calcDistanceLocalYDir(const LiveActor* actor, const sead::Vector3f& pos);
40f32 calcDistanceLocalZDir(const LiveActor* actor, const sead::Vector3f& pos);
41sead::Vector3f* getTransPtr(LiveActor* actor);
42void setTrans(LiveActor* actor, f32 x, f32 y, f32 z);
43void setTransX(LiveActor* actor, f32 x);
44void setTransY(LiveActor* actor, f32 y);
45void setTransZ(LiveActor* actor, f32 z);
46const sead::Vector3f& getRotate(const LiveActor* actor);
47sead::Vector3f* getRotatePtr(LiveActor* actor);
48void setRotate(LiveActor* actor, f32 x, f32 y, f32 z);
49void setRotateX(LiveActor* actor, f32 x);
50void setRotateY(LiveActor* actor, f32 y);
51void setRotateZ(LiveActor* actor, f32 z);
52sead::Vector3f* getScalePtr(LiveActor* actor);
53sead::Vector3f* tryGetScalePtr(LiveActor* actor);
54f32 getScaleX(const LiveActor* actor);
55f32 getScaleY(const LiveActor* actor);
56f32 getScaleZ(const LiveActor* actor);
57void setScale(LiveActor* actor, const sead::Vector3f& scale);
58void setScale(LiveActor* actor, f32 x, f32 y, f32 z);
59void setScaleAll(LiveActor* actor, f32 scale);
60void setScaleX(LiveActor* actor, f32 x);
61void setScaleY(LiveActor* actor, f32 y);
62void setScaleZ(LiveActor* actor, f32 z);
63bool isFrontTarget(const LiveActor* actor, const sead::Vector3f& pos);
64bool isFrontDir(const LiveActor* actor, const sead::Vector3f& dir);
65bool isBackTarget(const LiveActor* actor, const sead::Vector3f& pos);
66bool isBackDir(const LiveActor* actor, const sead::Vector3f& dir);
67bool isLeftTarget(const LiveActor* actor, const sead::Vector3f& pos);
68bool isLeftDir(const LiveActor* actor, const sead::Vector3f& dir);
69bool isRightTarget(const LiveActor* actor, const sead::Vector3f& pos);
70bool isRightDir(const LiveActor* actor, const sead::Vector3f& dir);
71bool isUpTarget(const LiveActor* actor, const sead::Vector3f& pos);
72bool isUpDir(const LiveActor* actor, const sead::Vector3f& dir);
73bool isDownTarget(const LiveActor* actor, const sead::Vector3f& pos);
74bool isDownDir(const LiveActor* actor, const sead::Vector3f& dir);
75const sead::Quatf& getQuat(const LiveActor* actor);
76sead::Quatf* getQuatPtr(LiveActor* actor);
77sead::Quatf* tryGetQuatPtr(LiveActor* actor);
78void setQuat(LiveActor* actor, const sead::Quatf& quat);
79sead::Vector3f* getGravityPtr(const LiveActor* actor);
80void setGravity(const LiveActor* actor, const sead::Vector3f& gravity);
81const sead::Vector3f& getFront(const LiveActor* actor);
82sead::Vector3f* getFrontPtr(LiveActor* actor);
83void setFront(LiveActor* actor, const sead::Vector3f& front);
84const sead::Vector3f& getUp(const LiveActor* actor);
85sead::Vector3f* getUpPtr(LiveActor* actor);
86void setUp(LiveActor* actor, const sead::Vector3f& up);
87void multVecPoseNoTrans(sead::Vector3f* posOut, const LiveActor* actor,
88 const sead::Vector3f& posIn);
89void multVecPose(sead::Vector3f* posOut, const LiveActor* actor, const sead::Vector3f& posIn);
90void multVecPoseAndScale(sead::Vector3f* posOut, const LiveActor* actor,
91 const sead::Vector3f& posIn);
92void multVecInvPose(sead::Vector3f* posOut, const LiveActor* actor, const sead::Vector3f& posIn);
93void multVecInvQuat(sead::Vector3f* posOut, const LiveActor* actor, const sead::Vector3f& posIn);
94void multMtxInvPose(sead::Matrix34f* mtxOut, const LiveActor* actor, const sead::Matrix34f& mtxIn);
95void calcTransLocalOffset(sead::Vector3f* transOut, const LiveActor* actor,
96 const sead::Vector3f& transIn);
97
98} // namespace al
99
100namespace alActorPoseFunction {
101
102void calcBaseMtx(sead::Matrix34f* mtx, const al::LiveActor* actor);
103void updatePoseTRMSV(al::LiveActor* actor);
104
105} // namespace alActorPoseFunction
106