1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace al {
6class IUseNerve;
7class Nerve;
8class NerveAction;
9class NerveStateBase;
10class LiveActor;
11
12void setNerve(IUseNerve* user, const Nerve* nerve);
13void setNerveAtStep(IUseNerve* user, const Nerve* nerve, s32 step);
14bool isStep(const IUseNerve* user, s32 step);
15void setNerveAtGreaterEqualStep(IUseNerve* user, const Nerve* nerve, s32 step);
16
17bool isNerve(const IUseNerve* user, const Nerve* nerve);
18s32 getNerveStep(const IUseNerve* user);
19const Nerve* getCurrentNerve(const IUseNerve* user);
20
21bool isFirstStep(const IUseNerve* user);
22bool isGreaterStep(const IUseNerve* user, s32 step);
23bool isGreaterEqualStep(const IUseNerve* user, s32 step);
24bool isLessStep(const IUseNerve* user, s32 step);
25bool isLessEqualStep(const IUseNerve* user, s32 step);
26bool isInRangeStep(const IUseNerve* user, s32 startStep, s32 endStep);
27bool isIntervalStep(const IUseNerve* user, s32 interval, s32 offset);
28bool isIntervalOnOffStep(const IUseNerve* user, s32 interval, s32 offset);
29
30bool isNewNerve(const IUseNerve* user);
31
32s32 calcNerveInterval(const IUseNerve* user, s32 interval, s32 offset);
33f32 calcNerveRate(const IUseNerve* user, s32 max);
34f32 calcNerveRate(const IUseNerve* user, s32 min, s32 max);
35f32 calcNerveEaseInRate(const IUseNerve* user, s32 max);
36f32 calcNerveEaseInRate(const IUseNerve* user, s32 min, s32 max);
37f32 calcNerveEaseOutRate(const IUseNerve* user, s32 max);
38f32 calcNerveEaseOutRate(const IUseNerve* user, s32 min, s32 max);
39f32 calcNerveEaseInOutRate(const IUseNerve* user, s32 max);
40f32 calcNerveEaseInOutRate(const IUseNerve* user, s32 min, s32 max);
41f32 calcNerveSquareInRate(const IUseNerve* user, s32 max);
42f32 calcNerveSquareInRate(const IUseNerve* user, s32 min, s32 max);
43f32 calcNerveSquareOutRate(const IUseNerve* user, s32 max);
44f32 calcNerveSquareOutRate(const IUseNerve* user, s32 min, s32 max);
45f32 calcNerveEaseByTypeRate(const IUseNerve* user, s32 max, s32 type);
46f32 calcNerveEaseByTypeRate(const IUseNerve* user, s32 min, s32 max, s32 type);
47f32 calcNervePowerInRate(const IUseNerve* user, s32 max, f32 power);
48f32 calcNervePowerInRate(const IUseNerve* user, s32 min, s32 max, f32 power);
49f32 calcNervePowerOutRate(const IUseNerve* user, s32 max, f32 power);
50f32 calcNervePowerOutRate(const IUseNerve* user, s32 min, s32 max, f32 power);
51f32 calcNerveJumpRate(const IUseNerve* user, s32 inMax, s32 upDuration, s32 release);
52f32 calcNerveEaseInValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
53f32 calcNerveStartEndRate(const IUseNerve* user, s32 inMax, s32 upDuration, s32 release);
54f32 calcNerveEaseInOutValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
55f32 calcNerveValue(const IUseNerve* user, s32 max, f32 start, f32 end);
56f32 calcNerveValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
57f32 calcNerveEaseInValue(const IUseNerve* user, s32 max, f32 start, f32 end);
58f32 calcNerveEaseOutValue(const IUseNerve* user, s32 max, f32 start, f32 end);
59f32 calcNerveEaseOutValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
60f32 calcNerveEaseInOutValue(const IUseNerve* user, s32 max, f32 start, f32 end);
61f32 calcNerveSquareInValue(const IUseNerve* user, s32 max, f32 start, f32 end);
62f32 calcNerveSquareInValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
63f32 calcNerveSquareOutValue(const IUseNerve* user, s32 max, f32 start, f32 end);
64f32 calcNerveSquareOutValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end);
65f32 calcNerveEaseByTypeValue(const IUseNerve* user, s32 max, f32 start, f32 end, s32 type);
66f32 calcNerveEaseByTypeValue(const IUseNerve* user, s32 min, s32 max, f32 start, f32 end, s32 type);
67f32 calcNerveCosCycle(const IUseNerve* user, s32 max);
68f32 calcNerveSinCycle(const IUseNerve* user, s32 max);
69f32 calcNerveRepeatRate(const IUseNerve* user, s32 max);
70f32 calcNerveRepeatDegree(const IUseNerve* user, s32 max);
71f32 calcNerveJumpValue(const IUseNerve* user, s32 inMax, s32 upDuration, s32 release, f32 factor);
72f32 calcNerveStartEndValue(const IUseNerve* user, s32 inMax, s32 upDuration, s32 release, f32 start,
73 f32 end);
74
75void initNerveState(IUseNerve* user, NerveStateBase* state, const Nerve* nerve,
76 const char* hostName);
77void addNerveState(IUseNerve* user, NerveStateBase* state, const Nerve* nerve,
78 const char* hostName);
79bool updateNerveState(IUseNerve* user);
80bool updateNerveStateAndNextNerve(IUseNerve* user, const Nerve* nerve);
81bool isStateEnd(const IUseNerve* user);
82} // namespace al
83
84namespace alNerveFunction {
85void setNerveAction(al::IUseNerve* user, const char* action);
86} // namespace alNerveFunction
87