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