1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6namespace al {
7class ActorActionKeeper;
8class HitSensor;
9class LiveActor;
10class Nerve;
11
12void startAction(LiveActor* actor, const char* actionName);
13s32 startActionAtRandomFrame(LiveActor* actor, const char* actionName);
14bool tryStartAction(LiveActor* actor, const char* actionName);
15bool tryStartActionIfNotPlaying(LiveActor* actor, const char* actionName);
16bool tryStartActionIfActionEnd(LiveActor* actor, const char* actionName);
17
18bool isActionPlaying(const LiveActor* actor, const char* actionName);
19bool isActionEnd(const LiveActor* actor);
20bool isExistAction(const LiveActor* actor);
21bool isExistAction(const LiveActor* actor, const char* actionName);
22bool isActionOneTime(const LiveActor* actor);
23bool isActionOneTime(const LiveActor* actor, const char* actionName);
24
25const char* getActionName(const LiveActor* actor);
26f32 getActionFrame(const LiveActor* actor);
27f32 getActionFrameMax(const LiveActor* actor);
28f32 getActionFrameMax(const LiveActor* actor, const char* actionName);
29f32 getActionFrameRate(const LiveActor* actor);
30
31void setActionFrame(LiveActor* actor, f32 frame);
32void setActionFrameRate(LiveActor* actor, f32 rate);
33
34void stopAction(LiveActor* actor);
35void restartAction(LiveActor* actor);
36void copyAction(LiveActor* actor, const LiveActor* sourceActor);
37
38void startNerveAction(LiveActor* actor, const char* actionName);
39void setNerveAtActionEnd(LiveActor* actor, const Nerve* nerve);
40void resetNerveActionForInit(LiveActor* actor);
41
42void startHitReaction(const LiveActor* actor, const char* name);
43void startHitReactionHitEffect(const LiveActor* actor, const char* name, const HitSensor* other,
44 const HitSensor* self);
45void startHitReactionHitEffect(const LiveActor* actor, const char* name, const sead::Vector3f& pos);
46void startHitReactionHitEffect(const LiveActor* actor, const char* name,
47 const sead::Matrix34f* mtx);
48void startHitReactionBlowHit(const LiveActor* actor, const HitSensor* other, const HitSensor* self);
49void startHitReactionBlowHit(const LiveActor* actor, const sead::Vector3f& pos);
50void startHitReactionBlowHit(const LiveActor* actor);
51void startHitReactionBlowHitDirect(const LiveActor* actor, const HitSensor* other,
52 const HitSensor* self);
53void startHitReactionBlowHitDirect(const LiveActor* actor, const sead::Vector3f& pos);
54void startHitReactionBlowHitDirect(const LiveActor* actor);
55
56} // namespace al
57