Skip to content

Commit

Permalink
Library/Nerve: Finish implementation (#319)
Browse files Browse the repository at this point in the history
  • Loading branch information
MonsterDruide1 authored Feb 2, 2025
1 parent 6395d28 commit e0f81e8
Show file tree
Hide file tree
Showing 42 changed files with 446 additions and 146 deletions.
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

0 comments on commit e0f81e8

Please sign in to comment.