1#pragma once
2
3#include <math/seadQuat.h>
4
5namespace al {
6struct ActorInitInfo;
7class KeyPoseKeeper;
8class LiveActor;
9class PlacementInfo;
10
11KeyPoseKeeper* createKeyPoseKeeper(const ActorInitInfo& info);
12KeyPoseKeeper* createKeyPoseKeeper(const PlacementInfo& info);
13void resetKeyPose(KeyPoseKeeper* keyPoseKeeper);
14void nextKeyPose(KeyPoseKeeper* keyPoseKeeper);
15void restartKeyPose(KeyPoseKeeper* keyPoseKeeper, sead::Vector3f* pos, sead::Quatf* orientation);
16void reverseKeyPose(KeyPoseKeeper* keyPoseKeeper);
17const sead::Vector3f& getCurrentKeyTrans(const KeyPoseKeeper* keyPoseKeeper);
18const sead::Vector3f& getNextKeyTrans(const KeyPoseKeeper* keyPoseKeeper);
19const sead::Quatf& getCurrentKeyQuat(const KeyPoseKeeper* keyPoseKeeper);
20const sead::Quatf& getNextKeyQuat(const KeyPoseKeeper* keyPoseKeeper);
21const PlacementInfo& getCurrentKeyPlacementInfo(const KeyPoseKeeper* keyPoseKeeper);
22const PlacementInfo& getNextKeyPlacementInfo(const KeyPoseKeeper* keyPoseKeeper);
23s32 getKeyPoseCount(const KeyPoseKeeper* keyPoseKeeper);
24void getKeyPoseTrans(sead::Vector3f* out, const KeyPoseKeeper* keyPoseKeeper, s32 idx);
25void getKeyPoseQuat(sead::Quatf* out, const KeyPoseKeeper* keyPoseKeeper, s32 idx);
26void calcLerpKeyTrans(sead::Vector3f* out, const KeyPoseKeeper* keyPoseKeeper, f32 rate);
27void calcSlerpKeyQuat(sead::Quatf* out, const KeyPoseKeeper* keyPoseKeeper, f32 rate);
28bool isMoveSignKey(const KeyPoseKeeper* keyPoseKeeper);
29bool isLastKey(const KeyPoseKeeper* keyPoseKeeper);
30bool isFirstKey(const KeyPoseKeeper* keyPoseKeeper);
31bool isGoingToEnd(const KeyPoseKeeper* keyPoseKeeper);
32bool isStop(const KeyPoseKeeper* keyPoseKeeper);
33bool isRestart(const KeyPoseKeeper* keyPoseKeeper);
34f32 calcDistanceNextKeyTrans(const KeyPoseKeeper* keyPoseKeeper);
35s32 calcTimeToNextKeyMove(const KeyPoseKeeper* keyPoseKeeper, f32 speed);
36void calcDirToNextKey(sead::Vector3f* out, const KeyPoseKeeper* keyPoseKeeper);
37f32 calcKeyMoveSpeed(const KeyPoseKeeper* keyPoseKeeper);
38f32 calcKeyMoveSpeedByTime(const KeyPoseKeeper* keyPoseKeeper);
39s32 calcKeyMoveWaitTime(const KeyPoseKeeper* keyPoseKeeper);
40s32 calcKeyMoveMoveTime(const KeyPoseKeeper* keyPoseKeeper);
41void calcKeyMoveClippingInfo(sead::Vector3f*, f32*, const KeyPoseKeeper*, f32);
42void setKeyMoveClippingInfo(LiveActor*, sead::Vector3f*, const KeyPoseKeeper*);
43} // namespace al
44