Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Library/Nerve: Finish implementation #319

Merged
merged 2 commits into from
Feb 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 45 additions & 45 deletions data/odyssey_functions.csv
Original file line number Diff line number Diff line change
Expand Up @@ -60041,8 +60041,8 @@ Address,Quality,Size,Name
0x0000007100959388,O,000072,_ZN2al11NerveActionC2Ev
0x00000071009593d0,O,000044,_ZN15alNerveFunction20NerveActionCollector8addNerveEPN2al11NerveActionE
0x00000071009593fc,O,000024,_ZN15alNerveFunction20NerveActionCollectorC2Ev
0x0000007100959414,U,000144,_ZN2al15NerveActionCtrlC2EPN15alNerveFunction20NerveActionCollectorE
0x00000071009594a4,U,000116,_ZNK2al15NerveActionCtrl9findNerveEPKc
0x0000007100959414,O,000144,_ZN2al15NerveActionCtrlC2EPN15alNerveFunction20NerveActionCollectorE
0x00000071009594a4,O,000116,_ZNK2al15NerveActionCtrl9findNerveEPKc
0x0000007100959518,O,000020,_ZN2al13NerveExecutorC2EPKc
0x000000710095952c,O,000032,_ZN2al13NerveExecutorD2Ev
0x000000710095954c,O,000060,_ZN2al13NerveExecutorD0Ev
Expand All @@ -60059,10 +60059,10 @@ Address,Quality,Size,Name
0x0000007100959820,O,000064,_ZN2al14ActorStateBaseC1EPKcPNS_9LiveActorE
0x0000007100959860,O,000036,_ZN2al14NerveStateBaseD0Ev
0x0000007100959884,O,000036,_ZN2al14ActorStateBaseD0Ev
0x00000071009598a8,U,000152,_ZN2al14NerveStateCtrlC2Ei
0x00000071009598a8,O,000152,_ZN2al14NerveStateCtrlC2Ei
0x0000007100959940,O,000040,_ZN2al14NerveStateCtrl8addStateEPNS_14NerveStateBaseEPKNS_5NerveEPKc
0x0000007100959968,O,000032,_ZN2al14NerveStateCtrl18updateCurrentStateEv
0x0000007100959988,U,000160,_ZN2al14NerveStateCtrl10startStateEPKNS_5NerveE
0x0000007100959988,O,000160,_ZN2al14NerveStateCtrl10startStateEPKNS_5NerveE
0x0000007100959a28,O,000068,_ZN2al14NerveStateCtrl13findStateInfoEPKNS_5NerveE
0x0000007100959a6c,O,000036,_ZNK2al14NerveStateCtrl17isCurrentStateEndEv
0x0000007100959a90,O,000100,_ZN2al14NerveStateCtrl18tryEndCurrentStateEv
Expand All @@ -60084,51 +60084,51 @@ Address,Quality,Size,Name
0x0000007100959e60,O,000036,_ZN2al10isNewNerveEPKNS_9IUseNerveE
0x0000007100959e84,O,000080,_ZN2al17calcNerveIntervalEPKNS_9IUseNerveEii
0x0000007100959ed4,O,000104,_ZN2al13calcNerveRateEPKNS_9IUseNerveEi
0x0000007100959f3c,U,000096,_ZN2al13calcNerveRateEPKNS_9IUseNerveEii
0x0000007100959f9c,U,000104,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEi
0x000000710095a004,U,000096,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEii
0x000000710095a064,U,000104,_ZN2al20calcNerveEaseOutRateEPKNS_9IUseNerveEi
0x000000710095a0cc,U,000096,_ZN2al20calcNerveEaseOutRateEPKNS_9IUseNerveEii
0x000000710095a12c,U,000104,_ZN2al22calcNerveEaseInOutRateEPKNS_9IUseNerveEi
0x000000710095a194,U,000096,_ZN2al22calcNerveEaseInOutRateEPKNS_9IUseNerveEii
0x000000710095a1f4,U,000104,_ZN2al21calcNerveSquareInRateEPKNS_9IUseNerveEi
0x000000710095a25c,U,000096,_ZN2al21calcNerveSquareInRateEPKNS_9IUseNerveEii
0x000000710095a2bc,U,000104,_ZN2al22calcNerveSquareOutRateEPKNS_9IUseNerveEi
0x000000710095a324,U,000096,_ZN2al22calcNerveSquareOutRateEPKNS_9IUseNerveEii
0x000000710095a384,U,000112,_ZN2al23calcNerveEaseByTypeRateEPKNS_9IUseNerveEii
0x000000710095a3f4,U,000112,_ZN2al23calcNerveEaseByTypeRateEPKNS_9IUseNerveEiii
0x000000710095a464,U,000120,_ZN2al20calcNervePowerInRateEPKNS_9IUseNerveEif
0x000000710095a4dc,U,000112,_ZN2al20calcNervePowerInRateEPKNS_9IUseNerveEiif
0x000000710095a54c,U,000120,_ZN2al21calcNervePowerOutRateEPKNS_9IUseNerveEif
0x000000710095a5c4,U,000112,_ZN2al21calcNervePowerOutRateEPKNS_9IUseNerveEiif
0x000000710095a634,U,000288,_ZN2al17calcNerveJumpRateEPKNS_9IUseNerveEiii
0x000000710095a754,U,000128,_ZN2al20calcNerveEaseInValueEPKNS_9IUseNerveEiiff
0x000000710095a7d4,U,000288,_ZN2al21calcNerveStartEndRateEPKNS_9IUseNerveEiii
0x000000710095a8f4,U,000128,_ZN2al23calcNerveEaseInOutValueEPKNS_9IUseNerveEiiff
0x000000710095a974,U,000128,_ZN2al14calcNerveValueEPKNS_9IUseNerveEiff
0x000000710095a9f4,U,000124,_ZN2al14calcNerveValueEPKNS_9IUseNerveEiiff
0x000000710095aa70,U,000136,_ZN2al20calcNerveEaseInValueEPKNS_9IUseNerveEiff
0x000000710095aaf8,U,000136,_ZN2al21calcNerveEaseOutValueEPKNS_9IUseNerveEiff
0x000000710095ab80,U,000128,_ZN2al21calcNerveEaseOutValueEPKNS_9IUseNerveEiiff
0x000000710095ac00,U,000136,_ZN2al23calcNerveEaseInOutValueEPKNS_9IUseNerveEiff
0x000000710095ac88,U,000136,_ZN2al22calcNerveSquareInValueEPKNS_9IUseNerveEiff
0x000000710095ad10,U,000128,_ZN2al22calcNerveSquareInValueEPKNS_9IUseNerveEiiff
0x000000710095ad90,U,000136,_ZN2al23calcNerveSquareOutValueEPKNS_9IUseNerveEiff
0x000000710095ae18,U,000128,_ZN2al23calcNerveSquareOutValueEPKNS_9IUseNerveEiiff
0x000000710095ae98,U,000144,_ZN2al24calcNerveEaseByTypeValueEPKNS_9IUseNerveEiffi
0x000000710095af28,U,000144,_ZN2al24calcNerveEaseByTypeValueEPKNS_9IUseNerveEiiffi
0x000000710095afb8,U,000088,_ZN2al17calcNerveCosCycleEPKNS_9IUseNerveEi
0x000000710095b010,U,000088,_ZN2al17calcNerveSinCycleEPKNS_9IUseNerveEi
0x000000710095b068,U,000064,_ZN2al19calcNerveRepeatRateEPKNS_9IUseNerveEi
0x000000710095b0a8,U,000076,_ZN2al21calcNerveRepeatDegreeEPKNS_9IUseNerveEi
0x000000710095b0f4,U,000036,_ZN2al18calcNerveJumpValueEPKNS_9IUseNerveEiiif
0x000000710095b118,U,000048,_ZN2al22calcNerveStartEndValueEPKNS_9IUseNerveEiiiff
0x0000007100959f3c,O,000096,_ZN2al13calcNerveRateEPKNS_9IUseNerveEii
0x0000007100959f9c,O,000104,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEi
0x000000710095a004,O,000096,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEii
0x000000710095a064,O,000104,_ZN2al20calcNerveEaseOutRateEPKNS_9IUseNerveEi
0x000000710095a0cc,O,000096,_ZN2al20calcNerveEaseOutRateEPKNS_9IUseNerveEii
0x000000710095a12c,O,000104,_ZN2al22calcNerveEaseInOutRateEPKNS_9IUseNerveEi
0x000000710095a194,O,000096,_ZN2al22calcNerveEaseInOutRateEPKNS_9IUseNerveEii
0x000000710095a1f4,O,000104,_ZN2al21calcNerveSquareInRateEPKNS_9IUseNerveEi
0x000000710095a25c,O,000096,_ZN2al21calcNerveSquareInRateEPKNS_9IUseNerveEii
0x000000710095a2bc,O,000104,_ZN2al22calcNerveSquareOutRateEPKNS_9IUseNerveEi
0x000000710095a324,O,000096,_ZN2al22calcNerveSquareOutRateEPKNS_9IUseNerveEii
0x000000710095a384,O,000112,_ZN2al23calcNerveEaseByTypeRateEPKNS_9IUseNerveEii
0x000000710095a3f4,O,000112,_ZN2al23calcNerveEaseByTypeRateEPKNS_9IUseNerveEiii
0x000000710095a464,O,000120,_ZN2al20calcNervePowerInRateEPKNS_9IUseNerveEif
0x000000710095a4dc,O,000112,_ZN2al20calcNervePowerInRateEPKNS_9IUseNerveEiif
0x000000710095a54c,O,000120,_ZN2al21calcNervePowerOutRateEPKNS_9IUseNerveEif
0x000000710095a5c4,O,000112,_ZN2al21calcNervePowerOutRateEPKNS_9IUseNerveEiif
0x000000710095a634,O,000288,_ZN2al17calcNerveJumpRateEPKNS_9IUseNerveEiii
0x000000710095a754,O,000128,_ZN2al20calcNerveEaseInValueEPKNS_9IUseNerveEiiff
0x000000710095a7d4,O,000288,_ZN2al21calcNerveStartEndRateEPKNS_9IUseNerveEiii
0x000000710095a8f4,O,000128,_ZN2al23calcNerveEaseInOutValueEPKNS_9IUseNerveEiiff
0x000000710095a974,O,000128,_ZN2al14calcNerveValueEPKNS_9IUseNerveEiff
0x000000710095a9f4,O,000124,_ZN2al14calcNerveValueEPKNS_9IUseNerveEiiff
0x000000710095aa70,O,000136,_ZN2al20calcNerveEaseInValueEPKNS_9IUseNerveEiff
0x000000710095aaf8,O,000136,_ZN2al21calcNerveEaseOutValueEPKNS_9IUseNerveEiff
0x000000710095ab80,O,000128,_ZN2al21calcNerveEaseOutValueEPKNS_9IUseNerveEiiff
0x000000710095ac00,O,000136,_ZN2al23calcNerveEaseInOutValueEPKNS_9IUseNerveEiff
0x000000710095ac88,O,000136,_ZN2al22calcNerveSquareInValueEPKNS_9IUseNerveEiff
0x000000710095ad10,O,000128,_ZN2al22calcNerveSquareInValueEPKNS_9IUseNerveEiiff
0x000000710095ad90,O,000136,_ZN2al23calcNerveSquareOutValueEPKNS_9IUseNerveEiff
0x000000710095ae18,O,000128,_ZN2al23calcNerveSquareOutValueEPKNS_9IUseNerveEiiff
0x000000710095ae98,O,000144,_ZN2al24calcNerveEaseByTypeValueEPKNS_9IUseNerveEiffi
0x000000710095af28,O,000144,_ZN2al24calcNerveEaseByTypeValueEPKNS_9IUseNerveEiiffi
0x000000710095afb8,O,000088,_ZN2al17calcNerveCosCycleEPKNS_9IUseNerveEi
0x000000710095b010,O,000088,_ZN2al17calcNerveSinCycleEPKNS_9IUseNerveEi
0x000000710095b068,O,000064,_ZN2al19calcNerveRepeatRateEPKNS_9IUseNerveEi
0x000000710095b0a8,O,000076,_ZN2al21calcNerveRepeatDegreeEPKNS_9IUseNerveEi
0x000000710095b0f4,O,000036,_ZN2al18calcNerveJumpValueEPKNS_9IUseNerveEiiif
0x000000710095b118,O,000048,_ZN2al22calcNerveStartEndValueEPKNS_9IUseNerveEiiiff
0x000000710095b148,O,000096,_ZN2al14initNerveStateEPNS_9IUseNerveEPNS_14NerveStateBaseEPKNS_5NerveEPKc
0x000000710095b1a8,U,000072,_ZN2al13addNerveStateEPNS_9IUseNerveEPNS_14NerveStateBaseEPKNS_5NerveEPKc
0x000000710095b1a8,O,000072,_ZN2al13addNerveStateEPNS_9IUseNerveEPNS_14NerveStateBaseEPKNS_5NerveEPKc
0x000000710095b1f0,O,000032,_ZN2al16updateNerveStateEPNS_9IUseNerveE
0x000000710095b210,O,000092,_ZN2al28updateNerveStateAndNextNerveEPNS_9IUseNerveEPKNS_5NerveE
0x000000710095b26c,O,000032,_ZN2al10isStateEndEPKNS_9IUseNerveE
0x000000710095b28c,U,000064,_ZN15alNerveFunction14setNerveActionEPN2al9IUseNerveEPKc
0x000000710095b28c,O,000064,_ZN15alNerveFunction14setNerveActionEPN2al9IUseNerveEPKc
0x000000710095b2cc,O,000100,_ZN2al13AccountHolderC2Ev
0x000000710095b330,O,000072,_ZN2al13AccountHolderD2Ev
0x000000710095b378,O,000068,_ZN2al13AccountHolderD0Ev
Expand Down
2 changes: 1 addition & 1 deletion lib/al/Library/LiveActor/ActorInitInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <prim/seadSafeString.h>

#include "Library/LiveActor/ActorSceneInfo.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Nerve/NerveAction.h"
#include "Library/Placement/PlacementInfo.h"

namespace al {
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/BreakMapPartsBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "Library/LiveActor/SubActorKeeper.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Obj/PartsFunction.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/ClockMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "Library/MapObj/ChildStep.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/ConveyerMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "Library/MapObj/ConveyerStep.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
#include "Library/Thread/FunctorV0M.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/FallMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "Library/LiveActor/ActorPoseKeeper.h"
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"

namespace {
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/FloaterMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"

namespace {
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/GateMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "Library/LiveActor/ActorPoseKeeper.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/KeyMoveMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/MapObj/ChildStep.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/KeyMoveMapPartsGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "Library/LiveActor/SubActorFunction.h"
#include "Library/MapObj/KeyMoveMapParts.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"

namespace {
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/RailMoveMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "Library/Movement/RailMoveMovement.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveStateCtrl.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Rail/RailUtil.h"
#include "Library/Stage/StageSwitchKeeper.h"
#include "Library/Thread/FunctorV0M.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/RollingCubeMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Obj/PartsModel.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Yaml/ByamlIter.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/RotateMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/MapObj/ChildStep.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/SlideMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "Library/LiveActor/ActorPoseKeeper.h"
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Se/SeFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/SwingMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "Library/MapObj/ChildStep.h"
#include "Library/Movement/SwingMovement.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
#include "Library/Thread/FunctorV0M.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/SwitchOpenMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "Library/LiveActor/ActorPoseKeeper.h"
#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Placement/PlacementInfo.h"
#include "Library/Stage/StageSwitchKeeper.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/MapObj/VisibleSwitchMapParts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "Library/LiveActor/ActorPoseKeeper.h"
#include "Library/LiveActor/ActorSensorMsgFunction.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"
#include "Library/Stage/StageSwitchKeeper.h"
#include "Library/Stage/StageSwitchUtil.h"
Expand Down
1 change: 1 addition & 0 deletions lib/al/Library/Movement/SwingMovement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "Library/Math/MathUtil.h"
#include "Library/Nerve/NerveSetupUtil.h"
#include "Library/Nerve/NerveUtil.h"
#include "Library/Placement/PlacementFunction.h"

namespace {
Expand Down
34 changes: 33 additions & 1 deletion lib/al/Library/Nerve/NerveAction.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,50 @@
#pragma once

#include <basis/seadTypes.h>

#include "Library/Nerve/Nerve.h"
#include "Library/Nerve/NerveUtil.h"

namespace alNerveFunction {
class NerveActionCollector;
}

namespace al {
class NerveAction : public Nerve {
public:
NerveAction();
virtual const char* getActionName() const = 0;

NerveAction* getNext() const { return mNextAction; }

protected:
friend class alNerveFunction::NerveActionCollector;

private:
NerveAction* mNextAction = nullptr;
};
} // namespace al

namespace alNerveFunction {

class NerveActionCollector {
public:
NerveActionCollector();

void addNerve(al::NerveAction* action);

s32 getNumActions() const { return mActionCount; }

al::NerveAction* getHead() { return mHead; }

protected:
friend class al::NerveAction;

private:
s32 mActionCount = 0;
al::NerveAction* mHead = nullptr;
al::NerveAction* mTail = nullptr;

static NerveActionCollector* sCurrentCollector;
};

} // namespace alNerveFunction
36 changes: 36 additions & 0 deletions lib/al/Library/Nerve/NerveActionCtrl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include "Library/Nerve/NerveActionCtrl.h"

#include "Library/Base/StringUtil.h"
#include "Library/Nerve/NerveAction.h"
#include "Library/Nerve/NerveUtil.h"

namespace al {

NerveActionCtrl::NerveActionCtrl(alNerveFunction::NerveActionCollector* collector) {
mNumActions = collector->getNumActions();
mActions = new NerveAction*[mNumActions];

if (mNumActions > 0) {
NerveAction* current = collector->getHead();
mActions[0] = current;

for (s32 i = 1; i < mNumActions; ++i) {
// requires doing this pattern to calculate mActions[i] first
NerveAction** next = &mActions[i];
current = current->getNext();
*next = current;
}
}
}

NerveAction* NerveActionCtrl::findNerve(const char* name) const {
for (s32 i = 0; i < mNumActions; ++i) {
NerveAction* action = mActions[i];
if (isEqualString(action->getActionName(), name))
return action;
}

return nullptr;
}

} // namespace al
25 changes: 25 additions & 0 deletions lib/al/Library/Nerve/NerveActionCtrl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once

#include <basis/seadTypes.h>

namespace alNerveFunction {
class NerveActionCollector;
} // namespace alNerveFunction

namespace al {
class NerveAction;

class NerveActionCtrl {
public:
NerveActionCtrl(alNerveFunction::NerveActionCollector* collector);

NerveAction* findNerve(const char* name) const;

private:
s32 mNumActions = 0;
NerveAction** mActions = nullptr;
};

static_assert(sizeof(NerveActionCtrl) == 0x10);

} // namespace al
11 changes: 0 additions & 11 deletions lib/al/Library/Nerve/NerveExecutor.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,10 @@
#include "Library/HostIO/HioNode.h"
#include "Library/Nerve/IUseNerve.h"

namespace alNerveFunction {
class NerveActionCollector;
} // namespace alNerveFunction

namespace al {
class Nerve;
class NerveKeeper;

class NerveActionCtrl {
public:
NerveActionCtrl(alNerveFunction::NerveActionCollector*);

NerveKeeper* findNerve(const char*) const;
};

class NerveExecutor : public IUseNerve, public HioNode {
public:
NerveExecutor(const char* name);
Expand Down
Loading