1#pragma once
2
3#include <math/seadQuat.h>
4#include <math/seadVector.h>
5
6namespace al {
7class HitSensor;
8class LiveActor;
9class SensorMsg;
10} // namespace al
11class IUsePlayerPuppet;
12class BindKeepDemoInfo;
13class IUsePlayerCollision;
14
15namespace rs {
16IUsePlayerPuppet* startPuppet(al::HitSensor* actorHitSensor, al::HitSensor* playerHitSensor);
17void endBindAndPuppetNull(IUsePlayerPuppet** playerPuppet);
18void endBindOnGroundAndPuppetNull(IUsePlayerPuppet** playerPuppet);
19void endBindJumpAndPuppetNull(IUsePlayerPuppet** playerPuppet, const sead::Vector3f& endTrans,
20 s32 timeBeforeEnd);
21void endBindWallJumpAndPuppetNull(IUsePlayerPuppet** playerPuppet, const sead::Vector3f& endTrans,
22 s32 timeBeforeEnd);
23void endBindCapThrow(IUsePlayerPuppet** playerPuppet);
24bool tryReceiveBindCancelMsgAndPuppetNull(IUsePlayerPuppet** playerPuppet,
25 const al::SensorMsg* msg);
26void setPuppetTrans(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& trans);
27void setPuppetVelocity(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& velocity);
28void setPuppetFront(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& front);
29void calcPuppetUp(sead::Vector3f* up, const IUsePlayerPuppet* playerPuppet);
30void setPuppetUp(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& up);
31void calcPuppetFront(sead::Vector3f* front, const IUsePlayerPuppet* playerPuppet);
32void setPuppetQuat(IUsePlayerPuppet* playerPuppet, const sead::Quatf& quat);
33void resetPuppetPosition(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& trans);
34void addPuppetVelocityFall(IUsePlayerPuppet* playerPuppet);
35const sead::Vector3f& getPuppetGravity(const IUsePlayerPuppet* playerPuppet);
36const sead::Vector3f& getPuppetVelocity(const IUsePlayerPuppet* playerPuppet);
37const sead::Vector3f& getPuppetTrans(const IUsePlayerPuppet* playerPuppet);
38void calcPuppetQuat(sead::Quatf* quat, const IUsePlayerPuppet* playerPuppet);
39void startPuppetAction(IUsePlayerPuppet* playerPuppet, const char* action);
40bool isPuppetActionEnd(const IUsePlayerPuppet* playerPuppet);
41bool isPuppetActionPlaying(const IUsePlayerPuppet* playerPuppet, const char* action);
42void setPuppetAnimRate(IUsePlayerPuppet* playerPuppet, f32 animRate);
43void setPuppetAnimBlendWeight(IUsePlayerPuppet* playerPuppet, f32 weight1, f32 weight2, f32 weight3,
44 f32 weight4, f32 weight5, f32 weight6);
45f32 getPuppetAnimFrameMax(const IUsePlayerPuppet* playerPuppet);
46void startPuppetHitReactionLand(IUsePlayerPuppet* playerPuppet);
47void hidePuppet(IUsePlayerPuppet* playerPuppet);
48void showPuppet(IUsePlayerPuppet* playerPuppet);
49bool isPuppetHidden(const IUsePlayerPuppet* playerPuppet);
50void syncPuppetVisibility(al::LiveActor* actor, const IUsePlayerPuppet* playerPuppet);
51void hidePuppetSilhouette(IUsePlayerPuppet* playerPuppet);
52void showPuppetSilhouette(IUsePlayerPuppet* playerPuppet);
53void hidePuppetShadow(IUsePlayerPuppet* playerPuppet);
54void showPuppetShadow(IUsePlayerPuppet* playerPuppet);
55void validatePuppetSensor(IUsePlayerPuppet* playerPuppet);
56void invalidatePuppetSensor(IUsePlayerPuppet* playerPuppet);
57void invalidatePuppetCollider(IUsePlayerPuppet* playerPuppet);
58bool isCollidedPuppetGround(IUsePlayerPuppet* playerPuppet);
59const sead::Vector3f& getCollidedPuppetGroundNormal(IUsePlayerPuppet* playerPuppet);
60void validatePuppetCollider(IUsePlayerPuppet* playerPuppet);
61void requestDamage(IUsePlayerPuppet* playerPuppet);
62void clearStainEffect(IUsePlayerPuppet* playerPuppet);
63void copyPuppetDitherAlpha(IUsePlayerPuppet* playerPuppet, const al::LiveActor* actor);
64void validatePuppetLookAt(IUsePlayerPuppet* playerPuppet);
65void invalidatePuppetLookAt(IUsePlayerPuppet* playerPuppet);
66void validatePuppetForceLookAt(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& lookAt);
67void invalidatePuppetForceLookAt(IUsePlayerPuppet* playerPuppet);
68void validatePuppetSeparateMode(IUsePlayerPuppet* playerPuppet);
69void invalidatePuppetSeparateMode(IUsePlayerPuppet* playerPuppet);
70void validatePuppetReceivePush(IUsePlayerPuppet* playerPuppet);
71void invalidatePuppetReceivePush(IUsePlayerPuppet* playerPuppet);
72void forcePutOnPuppetCap(IUsePlayerPuppet* playerPuppet);
73void forcePutOnPuppetCapWithEffect(IUsePlayerPuppet* playerPuppet);
74void setForceRunAfterEndBind(IUsePlayerPuppet* playerPuppet, s32, f32);
75void validateRecoveryArea(IUsePlayerPuppet* playerPuppet);
76void invalidateRecoveryArea(IUsePlayerPuppet* playerPuppet);
77void validateGuideArrow(IUsePlayerPuppet* playerPuppet);
78void invalidateGuideArrow(IUsePlayerPuppet* playerPuppet);
79void validateWaterSurfaceShadow(IUsePlayerPuppet* playerPuppet);
80void invalidateWaterSurfaceShadow(IUsePlayerPuppet* playerPuppet);
81bool isPuppetInputCapThrow(const IUsePlayerPuppet* playerPuppet);
82bool isPuppetInputSwing(const IUsePlayerPuppet* playerPuppet);
83BindKeepDemoInfo* initBindKeepDemoInfo();
84bool isActiveBindKeepDemo(const BindKeepDemoInfo* bindKeepDemoInfo);
85bool tryStartBindKeepDemo(BindKeepDemoInfo* bindKeepDemoInfo, const al::SensorMsg* msg,
86 const IUsePlayerPuppet* playerPuppet);
87bool tryEndBindKeepDemo(BindKeepDemoInfo* bindKeepDemoInfo, const al::SensorMsg* msg,
88 IUsePlayerPuppet* playerPuppet);
89bool isPuppetTrigJumpButton(const IUsePlayerPuppet* playerPuppet);
90bool isPuppetHoldJumpButton(const IUsePlayerPuppet* playerPuppet);
91bool isPuppetTrigActionButton(const IUsePlayerPuppet* playerPuppet);
92bool isPuppetHoldActionButton(const IUsePlayerPuppet* playerPuppet);
93bool isPuppetTriggerAnyButton(const IUsePlayerPuppet* playerPuppet);
94bool isPuppetHoldAnyButton(const IUsePlayerPuppet* playerPuppet);
95bool isPuppetMoveStickOn(const IUsePlayerPuppet* playerPuppet);
96bool isPuppetStartWorldWarp(const IUsePlayerPuppet* playerPuppet);
97bool isPuppetCancelWorldWarp(const IUsePlayerPuppet* playerPuppet);
98const sead::Vector2f& getPuppetMoveStick(const IUsePlayerPuppet* playerPuppet);
99bool isTriggerGetOff(const IUsePlayerPuppet* playerPuppet);
100f32 getPuppetPoseRotZDegreeLeft(const IUsePlayerPuppet* playerPuppet);
101f32 getPuppetPoseRotZDegreeRight(const IUsePlayerPuppet* playerPuppet);
102void requestUpdateSafetyPoint(IUsePlayerPuppet* playerPuppet, const al::LiveActor* actor,
103 const IUsePlayerCollision* playerCollision);
104void requestForceSafetyPoint(IUsePlayerPuppet* playerPuppet, const sead::Vector3f& recoveryTrans,
105 const sead::Vector3f& recoveryNormal);
106} // namespace rs
107