From aad8b78c22d6b94324e3589afa023c25e83fc6b6 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 16 Sep 2025 17:07:20 -0400 Subject: [PATCH] change: all movement separated into invidividual tasks, a lot of shuffling value groups and related stuff around --- Assets/Player/Graphs/PlayerBaseFSM.asset | 555 +++++++++------ .../Core/Graph Tasks/ChangeCameraSettings.cs | 113 +-- .../Graph Tasks/ChangeMovementSettings.cs | 189 ++--- .../Movement Settings Changes.meta | 8 + .../ChangeDirectionSettings.cs | 67 ++ .../ChangeDirectionSettings.cs.meta | 2 + .../ChangeGravitySettings.cs | 54 ++ .../ChangeGravitySettings.cs.meta | 2 + .../ChangeMoveSpeedSettings.cs | 38 + .../ChangeMoveSpeedSettings.cs.meta | 2 + .../ChangeRotationSettings.cs | 38 + .../ChangeRotationSettings.cs.meta | 2 + Assets/Scripts/Core/ValueGroup.cs | 653 +++++++----------- Assets/Scripts/Core/ValueGroupEditors.cs | 454 ++++++++++++ Assets/Scripts/Core/ValueGroupEditors.cs.meta | 3 + .../Scripts/Player/CameraSettingsProcessor.cs | 277 ++++---- Assets/Scripts/Player/UnitMovementHandler.cs | 86 ++- 17 files changed, 1507 insertions(+), 1036 deletions(-) create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes.meta create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs.meta create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs.meta create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs.meta create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs create mode 100644 Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs.meta create mode 100644 Assets/Scripts/Core/ValueGroupEditors.cs create mode 100644 Assets/Scripts/Core/ValueGroupEditors.cs.meta diff --git a/Assets/Player/Graphs/PlayerBaseFSM.asset b/Assets/Player/Graphs/PlayerBaseFSM.asset index 94964dc..5cf3fb1 100644 --- a/Assets/Player/Graphs/PlayerBaseFSM.asset +++ b/Assets/Player/Graphs/PlayerBaseFSM.asset @@ -14,238 +14,391 @@ MonoBehaviour: m_EditorClassIdentifier: _serializedGraph: '{"type":"NodeCanvas.StateMachines.FSM","nodes":[{"_onEnterList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"valueB":{"_value":4},"$type":"NodeCanvas.Tasks.Actions.SetVariable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"},{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":2},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":2},"airDirectionDecay":{"label":"Air - Direction Decay","value":{},"changeValue":2},"accelerationSmoothing":{"label":"Acceleration - Smoothing","value":{},"changeValue":2},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":2},"jumpPower":{"label":"Jump Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity - Max","value":{},"changeValue":2},"gravityAcceleration":{"label":"Gravity Acceleration - Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":0,"$type":"PlayerFacingDirection"},"changeValue":2},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":2},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{}},"orbitFollowTop":{"label":"Top","changeRadius":2},"orbitFollowCenter":{"label":"Center","changeRadius":2},"orbitFollowBottom":{"label":"Bottom","changeRadius":2},"axisLookXGain":{"label":"Look - Orbit X Gain","value":{}},"axisLookYGain":{"label":"Look Orbit Y Gain","value":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_onUpdateList":{"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":2},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":2},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":2},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","changeValue":2,"value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":0,"$type":"PlayerFacingDirection"},"changeValue":2},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"foldEnter":true,"foldUpdate":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Grounded","_position":{"x":468.8087,"y":389.2739},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"0"},{"_position":{"x":369.3697,"y":186.864},"$type":"NodeCanvas.StateMachines.EmptyState","$id":"1"},{"_actionList":{"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{"_value":1.0},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{"_value":1.0},"changeValue":1},"jumpPower":{"label":"Jump - Power","value":{}},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity - Power","value":{}},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation Speed","value":{}},"rotationSmoothing":{"label":"Rotation - Smoothing","value":{},"changeValue":2},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":1.0},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Air + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{},"smoothing":{},"easing":{}},"orbitTargetOffset":{"label":"Target + Offset","value":{},"smoothing":{},"easing":{}},"orbitPositionDamping":{"label":"Position + Damping","value":{},"smoothing":{},"easing":{}},"orbitFollowTop":{"label":"Top","changeRadius":2,"smoothing":{},"easing":{}},"orbitFollowCenter":{"label":"Center","changeRadius":2,"smoothing":{},"easing":{}},"orbitFollowBottom":{"label":"Bottom","changeRadius":2,"smoothing":{},"easing":{}},"enableXAxis":{"label":"Input + Axis X Enabled","value":{"_value":true}},"enableYAxis":{"label":"Input Axis Y + Enabled","value":{"_value":true}},"axisLookXGain":{"label":"Look Orbit X Gain","value":{},"smoothing":{},"easing":{}},"axisLookYGain":{"label":"Look + Orbit Y Gain","value":{},"smoothing":{},"easing":{}},"screenPosition":{"label":"Screen + Position","value":{},"smoothing":{},"easing":{}},"cameraOffset":{"label":"Offset","value":{},"smoothing":{},"easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_onUpdateList":{"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing + Direction","newValue":{"$content":0,"$type":"PlayerFacingDirection"},"changeValue":2},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"foldEnter":true,"foldUpdate":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Grounded","_position":{"x":468.8087,"y":389.2739},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"0"},{"_position":{"x":369.3697,"y":186.864},"$type":"NodeCanvas.StateMachines.EmptyState","$id":"1"},{"_actionList":{"actions":[{"moveSpeed":{"label":"Move + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{"_value":1.0},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{"_value":1.0},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":1.0},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Air Reset Received"},"delay":{},"$type":"NodeCanvas.Tasks.Actions.SendEvent"}]},"_color":{"r":0.3647059,"g":0.3215686,"b":1.0,"a":1.0},"_name":"Airborne Standard Movement","_position":{"x":816.2676,"y":-364.6197},"$type":"NodeCanvas.StateMachines.ActionState","$id":"2"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Airborn - (Standby)","_position":{"x":630.0591,"y":-108.6804},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"3"},{"_actionList":{"executionMode":1,"actions":[{"raycastHit":{"_name":"_wallJumpHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallJumpHitNormal"},"point":{},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_name":"Left + (Standby)","_position":{"x":631.0591,"y":-108.6804},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"3"},{"_actionList":{"executionMode":1,"actions":[{"raycastHit":{"_name":"_wallJumpHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallJumpHitNormal"},"point":{},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_name":"Left Side Wall Jump","_position":{"x":309.8118,"y":-282.4449},"$type":"NodeCanvas.StateMachines.ActionState","$id":"4"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"x":1.0,"z":0.5},"changeX":1,"changeZ":1},"newDirectionStrength":15.0,"jumpPower":{"label":"Jump - Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeX":1,"changeZ":1},"newDirectionStrength":15.0,"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Left + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Left Side Wall Jump","_position":{"x":94.22898,"y":-440.666},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"5"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Airborn (Locked)","_position":{"x":-71.23453,"y":462.5237},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"6"},{"_position":{"x":-169.0027,"y":131.3442},"$type":"NodeCanvas.StateMachines.EmptyState","$id":"7"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":1},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":1},"airDirectionDecay":{"label":"Air - Direction Decay","value":{},"changeValue":2},"accelerationSmoothing":{"label":"Acceleration - Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":1},"gravityMax":{"label":"Gravity - Max","value":{},"changeValue":1},"gravityAcceleration":{"label":"Gravity Acceleration - Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{"_value":4.0},"changeValue":1},"rotateFacing":{"label":"Facing + Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","changeValue":2,"value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","changeValue":1,"value":{"_value":4.0},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"airDirection":{"_name":"airMoveDirection","_targetVariableID":"2fc91db6-09dd-4a1f-9195-426a0c44de31"},"jumpPower":{"_name":"jumpPower","_targetVariableID":"9a82efee-e317-423c-ad6e-5ef7e6145396"},"targetLocation":{"_name":"_grappleLaunchDir"},"offset":{"_value":{"y":1.0}},"relativeRotation":{},"launchRelativeTo":{},"useRelativeForce":{"_value":true},"minimumForce":{},"maximumForce":{"_value":100.0},"forceRelativeToDistance":{"_value":4.0},"force":{},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.StartLaunchJump"},{"grapplePoint":{"_name":"_grappleLaunchDir"},"speed":40.0,"horizontalDotBreak":-0.6,"verticalDotBreak":-0.2,"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple","_position":{"x":-486.7946,"y":-174.5741},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"8"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Post + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"airDirection":{"_name":"airMoveDirection","_targetVariableID":"2fc91db6-09dd-4a1f-9195-426a0c44de31"},"jumpPower":{"_name":"jumpPower","_targetVariableID":"9a82efee-e317-423c-ad6e-5ef7e6145396"},"targetLocation":{"_name":"_grappleLaunchDir"},"offset":{"_value":{"y":1.0}},"relativeRotation":{},"launchRelativeTo":{},"useRelativeForce":{"_value":true},"minimumForce":{},"maximumForce":{"_value":100.0},"forceRelativeToDistance":{"_value":4.0},"force":{},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.StartLaunchJump"},{"grapplePoint":{"_name":"_grappleLaunchDir"},"speed":40.0,"horizontalDotBreak":-0.6,"verticalDotBreak":-0.2,"$type":"NodeCanvas.Tasks.Actions.DoGrapplePull"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.5019608,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Grapple","_position":{"x":-486.7946,"y":-174.5741},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"8"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4132327,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Post Grapple Jump","_position":{"x":-238.9581,"y":-559.5018},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"9"},{"_actionList":{"actions":[{"moveSpeed":{"label":"Move - Speed","value":{"_value":15.0},"changeValue":1},"moveSpeedSoothing":{"label":"Move - Speed Smoothing","value":{"_value":0.5},"changeValue":1},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{"_value":1.0},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{"_value":0.5},"changeValue":1},"jumpPower":{"label":"Jump - Power","value":{}},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{"_value":4.5},"changeValue":1},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{"_value":1.0},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{"_value":0.2},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":0.6},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Delay + Speed","changeValue":1,"value":{"_value":15.0},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":1,"value":{"_value":0.5},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{"_value":1.0},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{"_value":0.5},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","changeValue":1,"value":{"_value":4.5},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{"_value":1.0},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","changeValue":1,"value":{"_value":0.2},"smoothing":{},"easing":{}},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":0.6},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Delay Air Movement Reset"},"eventValue":{"_value":2.5},"delay":{},"$type":"NodeCanvas.Tasks.Actions.SendEvent`1[[System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}]},"_color":{"r":0.3647059,"g":0.3215686,"b":1.0,"a":1.0},"_name":"Post Grapple Movement","_position":{"x":-100.2183,"y":-237.2979},"$type":"NodeCanvas.StateMachines.ActionState","$id":"10"},{"_position":{"x":-270.4407,"y":64.96476},"$type":"NodeCanvas.StateMachines.EmptyState","$id":"11"},{"_onEnterList":{"actions":[{"raycastHit":{"_name":"_wallStickHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallStickHitNormal"},"point":{"_name":"_wallStickHitPoint"},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"},{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":1},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":1},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":2},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":2},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"x":0.5,"z":0.5}},"jumpPower":{"label":"Jump Power","value":{},"changeValue":2},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":5,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":1},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{},"changeValue":1},"feedNewRotation":{"_value":{"y":-45.0}},"feedRelativeTo":{"_name":"_wallStickHitNormal"},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Right + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewRotation":{"_value":{"y":-45.0}},"feedRelativeTo":{"_name":"_wallStickHitNormal"},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Right Wall Stick","_position":{"x":1440.892,"y":491.8188},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"12"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":2},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":2},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"z":1.0},"changeX":1,"changeZ":1},"newDirectionStrength":22.0,"jumpPower":{"label":"Jump - Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":2},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{},"changeValue":2},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Right + Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeX":1,"changeZ":1},"newDirectionStrength":22.0,"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing + Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Right Wall Launch","_position":{"x":1539.249,"y":-269.5498},"$type":"NodeCanvas.StateMachines.ActionState","$id":"13"},{"_name":"back to airborne","_position":{"x":1318.265,"y":-168.164},"$type":"NodeCanvas.StateMachines.EmptyState","$id":"14"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{}},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{}},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":2},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":2},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{}},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{}},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{}},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Wall - Slide","_position":{"x":1163.601,"y":367.7003},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"15"},{"_onEnterList":{"actions":[{"raycastHit":{"_name":"_wallStickHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallStickHitNormal"},"point":{"_name":"_wallStickHitPoint"},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"},{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":1},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":1},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":2},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":2},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"x":0.5,"z":0.5}},"jumpPower":{"label":"Jump Power","value":{},"changeValue":2},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing - Direction","newValue":{"$content":5,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":1},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{},"changeValue":1},"feedNewRotation":{"_value":{"y":45.0}},"feedRelativeTo":{"_name":"_wallStickHitNormal"},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Left - Wall Stick","_position":{"x":1293.098,"y":192.7727},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"16"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":2},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":2},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"z":1.0},"changeX":1,"changeZ":1},"newDirectionStrength":22.0,"jumpPower":{"label":"Jump - Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":2},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{},"changeValue":2},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Left - Wall Launch","_position":{"x":1461.118,"y":-136.9542},"$type":"NodeCanvas.StateMachines.ActionState","$id":"17"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{},"changeValue":1},"accelerationSmoothing":{"label":"Acceleration - Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"z":0.1},"changeZ":1},"jumpPower":{"label":"Jump Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":1},"gravityPower":{"label":"Gravity Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Wall + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Wall + Slide","_position":{"x":1163.601,"y":367.7003},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"15"},{"_onEnterList":{"actions":[{"raycastHit":{"_name":"_wallStickHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallStickHitNormal"},"point":{"_name":"_wallStickHitPoint"},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"},{"moveSpeed":{"label":"Move + Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing + Direction","newValue":{"$content":5,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewRotation":{"_value":{"y":45.0}},"feedRelativeTo":{"_name":"_wallStickHitNormal"},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Left + Wall Stick","_position":{"x":1293.098,"y":192.7727},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"16"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeX":1,"changeZ":1},"newDirectionStrength":22.0,"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing + Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Left + Wall Launch","_position":{"x":1461.118,"y":-136.9542},"$type":"NodeCanvas.StateMachines.ActionState","$id":"17"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","changeValue":1,"value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeZ":1},"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing + Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Wall Climb Jump","_position":{"x":1001.339,"y":-546.4128},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"18"},{"_actionList":{"executionMode":1,"actions":[{"raycastHit":{"_name":"_wallJumpHit"},"transform":{},"collider":{},"gameObject":{},"distance":{},"normal":{"_name":"_wallJumpHitNormal"},"point":{},"$type":"NodeCanvas.Tasks.Actions.DecomposeRaycastHit"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_name":"Right Side Wall Jump","_position":{"x":410.2013,"y":-480.2733},"$type":"NodeCanvas.StateMachines.ActionState","$id":"19"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"feedNewDirection":{"label":"Feed New - Direction","newValue":{"x":-1.0,"z":0.5},"changeX":1,"changeZ":1},"newDirectionStrength":15.0,"jumpPower":{"label":"Jump - Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeX":1,"changeZ":1},"newDirectionStrength":15.0,"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Right + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Right Side Wall Jump","_position":{"x":285.3196,"y":-670.1414},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"20"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{"_value":2.0},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{"_value":2.0},"changeValue":1},"addDirectionFromInput":{"x":1.0,"y":1.0},"addInputPriorty":0.514,"jumpPower":{"label":"Jump - Power","value":{"_value":14.0},"changeValue":1},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{"_value":1.0},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{"_value":2.0},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{"_value":2.0},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"addDirectionFromInput":{"x":1.0,"y":1.0},"addInputPriorty":0.514,"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{"_value":14.0},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{"_value":1.0},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{}},"orbitFollowTop":{"label":"Top","changeRadius":1,"radius":7.0},"orbitFollowCenter":{"label":"Center","changeRadius":1,"radius":8.0},"orbitFollowBottom":{"label":"Bottom","changeRadius":1,"radius":5.0},"axisLookXGain":{"label":"Look - Orbit X Gain","value":{}},"axisLookYGain":{"label":"Look Orbit Y Gain","value":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"},{"log":{"_value":"Jumped"},"secondsToRun":0.0,"$type":"NodeCanvas.Tasks.Actions.DebugLogText"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Standard + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{},"smoothing":{},"easing":{}},"orbitTargetOffset":{"label":"Target + Offset","value":{},"smoothing":{},"easing":{}},"orbitPositionDamping":{"label":"Position + Damping","value":{},"smoothing":{},"easing":{}},"orbitFollowTop":{"label":"Top","changeRadius":1,"radius":7.0,"smoothing":{},"easing":{}},"orbitFollowCenter":{"label":"Center","changeRadius":1,"radius":8.0,"smoothing":{},"easing":{}},"orbitFollowBottom":{"label":"Bottom","changeRadius":1,"radius":5.0,"smoothing":{},"easing":{}},"enableXAxis":{"label":"Input + Axis X Enabled","value":{"_value":true}},"enableYAxis":{"label":"Input Axis Y + Enabled","value":{"_value":true}},"axisLookXGain":{"label":"Look Orbit X Gain","value":{},"smoothing":{},"easing":{}},"axisLookYGain":{"label":"Look + Orbit Y Gain","value":{},"smoothing":{},"easing":{}},"screenPosition":{"label":"Screen + Position","value":{},"smoothing":{},"easing":{}},"cameraOffset":{"label":"Offset","value":{},"smoothing":{},"easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"},{"log":{"_value":"Jumped"},"secondsToRun":0.0,"$type":"NodeCanvas.Tasks.Actions.DebugLogText"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Standard Jump","_position":{"x":758.6965,"y":226.1113},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"21"},{"_actionList":{"actions":[{"valueA":{"_name":"newAirMoveSmoothing","_targetVariableID":"9ba7a222-e29f-4ef5-8f1e-144189e5e5d3"},"valueB":{"_value":1.0},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.SetFloat"},{"eventName":{"_value":"Air Reset Received"},"delay":{},"$type":"NodeCanvas.Tasks.Actions.SendEvent"},{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":2},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{},"changeValue":2},"accelerationSmoothing":{"label":"Acceleration - Smoothing","value":{},"changeValue":2},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{}},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{},"changeValue":2},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{},"changeValue":2},"gravityAcceleration":{"label":"Gravity Acceleration - Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity Scale","value":{},"changeValue":2},"settingsChangeSmoothing":{"label":"Settings - Change Smoothing","value":{},"changeValue":2},"rotationSpeed":{"label":"Rotation - Speed","value":{},"changeValue":2},"rotationSmoothing":{"label":"Rotation Smoothing","value":{},"changeValue":2},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{},"changeValue":2},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.3647059,"g":0.3215686,"b":1.0,"a":1.0},"_name":"Airborne + Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","changeValue":2,"value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":2,"value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationSpeed":{"label":"Rotation + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","changeValue":2,"value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","changeValue":2,"value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_color":{"r":0.3647059,"g":0.3215686,"b":1.0,"a":1.0},"_name":"Airborne Standard Movement","_position":{"x":286.209,"y":32.4603},"$type":"NodeCanvas.StateMachines.ActionState","$id":"22"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":1},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{}},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{}},"feedNewDirection":{"label":"Feed New Direction","newValue":{"z":1.0}},"jumpPower":{"label":"Jump - Power","value":{}},"jumpPowerDecay":{"label":"Jump Decay Speed","value":{}},"gravityPower":{"label":"Gravity - Power","value":{}},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{},"changeValue":1},"axisLookXGain":{"label":"Look - Orbit X Gain","value":{}},"axisLookYGain":{"label":"Look Orbit Y Gain","value":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Sprint + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","changeValue":1,"value":{},"smoothing":{},"easing":{}},"orbitTargetOffset":{"label":"Target + Offset","value":{},"smoothing":{},"easing":{}},"orbitPositionDamping":{"label":"Position + Damping","value":{},"smoothing":{},"easing":{}},"enableXAxis":{"label":"Input + Axis X Enabled","value":{"_value":true}},"enableYAxis":{"label":"Input Axis Y + Enabled","value":{"_value":true}},"axisLookXGain":{"label":"Look Orbit X Gain","value":{},"smoothing":{},"easing":{}},"axisLookYGain":{"label":"Look + Orbit Y Gain","value":{},"smoothing":{},"easing":{}},"screenPosition":{"label":"Screen + Position","value":{},"smoothing":{},"easing":{}},"cameraOffset":{"label":"Offset","value":{},"smoothing":{},"easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Sprint Burst","_position":{"x":633.7453,"y":530.2648},"$type":"NodeCanvas.StateMachines.ActionState","$id":"23"},{"_onEnterList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"valueB":{"_value":4},"$type":"NodeCanvas.Tasks.Actions.SetVariable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"},{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{},"changeValue":1},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{}},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{}},"jumpPower":{"label":"Jump Power","value":{},"changeValue":1},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":1},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","value":{},"changeValue":2},"axisLookXGain":{"label":"Look - Orbit X Gain","value":{}},"axisLookYGain":{"label":"Look Orbit Y Gain","value":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_onUpdateList":{"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{},"changeValue":1},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{},"changeValue":1},"jumpPower":{"label":"Jump Power","value":{}},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{}},"gravityPower":{"label":"Gravity Power","value":{}},"gravityMax":{"label":"Gravity - Max","value":{}},"gravityAcceleration":{"label":"Gravity Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","changeValue":2,"value":{},"smoothing":{},"easing":{}},"orbitTargetOffset":{"label":"Target + Offset","value":{},"smoothing":{},"easing":{}},"orbitPositionDamping":{"label":"Position + Damping","value":{},"smoothing":{},"easing":{}},"enableXAxis":{"label":"Input + Axis X Enabled","value":{"_value":true}},"enableYAxis":{"label":"Input Axis Y + Enabled","value":{"_value":true}},"axisLookXGain":{"label":"Look Orbit X Gain","value":{},"smoothing":{},"easing":{}},"axisLookYGain":{"label":"Look + Orbit Y Gain","value":{},"smoothing":{},"easing":{}},"screenPosition":{"label":"Screen + Position","value":{},"smoothing":{},"easing":{}},"cameraOffset":{"label":"Offset","value":{},"smoothing":{},"easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_onUpdateList":{"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","changeValue":1,"value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{}},"jumpPower":{"label":"Jump + Power","value":{},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","value":{},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":2},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Grounded + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"foldEnter":true,"foldUpdate":true,"foldExit":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Grounded Running","_position":{"x":829.2946,"y":679.0282},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"24"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","value":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","value":{}},"airDirectionDecay":{"label":"Air - Direction Decay","value":{}},"accelerationSmoothing":{"label":"Acceleration Smoothing","value":{"_value":2.0},"changeValue":1},"deaccelerationSmoothing":{"label":"Deacceleration - Smoothing","value":{"_value":2.0},"changeValue":1},"feedNewDirection":{"label":"Feed - New Direction","newValue":{"z":1.0},"changeZ":1},"jumpPower":{"label":"Jump Power","value":{"_value":13.0},"changeValue":1},"jumpPowerDecay":{"label":"Jump - Decay Speed","value":{"_value":2.0},"changeValue":1},"gravityPower":{"label":"Gravity - Power","value":{},"changeValue":2},"gravityMax":{"label":"Gravity Max","value":{}},"gravityAcceleration":{"label":"Gravity - Acceleration Speed","value":{},"changeValue":2},"gravityScale":{"label":"Gravity - Scale","value":{}},"settingsChangeSmoothing":{"label":"Settings Change Smoothing","value":{}},"rotateFacing":{"label":"Facing + Speed","value":{},"smoothing":{},"easing":{}},"moveSpeedSoothing":{"label":"Move + Speed Smoothing","value":{},"smoothing":{},"easing":{}},"airDirectionDecay":{"label":"Air + Direction Decay","value":{},"smoothing":{},"easing":{}},"accelerationSmoothing":{"label":"Acceleration + Smoothing","changeValue":1,"value":{"_value":2.0},"smoothing":{},"easing":{}},"deaccelerationSmoothing":{"label":"Deacceleration + Smoothing","changeValue":1,"value":{"_value":2.0},"smoothing":{},"easing":{}},"feedNewDirection":{"label":"Feed + New Direction","value":{},"smoothing":{},"easing":{},"changeZ":1},"jumpPower":{"label":"Jump + Power","changeValue":1,"value":{"_value":13.0},"smoothing":{},"easing":{}},"jumpPowerDecay":{"label":"Jump + Decay Speed","changeValue":1,"value":{"_value":2.0},"smoothing":{},"easing":{}},"gravityPower":{"label":"Gravity + Power","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityMax":{"label":"Gravity + Max","value":{},"smoothing":{},"easing":{}},"gravityAcceleration":{"label":"Gravity + Acceleration Speed","changeValue":2,"value":{},"smoothing":{},"easing":{}},"gravityScale":{"label":"Gravity + Scale","value":{},"smoothing":{},"easing":{}},"settingsChangeSmoothing":{"label":"Settings + Change Smoothing","value":{},"smoothing":{},"easing":{}},"rotateFacing":{"label":"Facing Direction","newValue":{"$content":4,"$type":"PlayerFacingDirection"},"changeValue":1},"rotationSpeed":{"label":"Rotation - Speed","value":{}},"rotationSmoothing":{"label":"Rotation Smoothing","value":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","value":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Run + Speed","value":{},"smoothing":{},"easing":{}},"rotationSmoothing":{"label":"Rotation + Smoothing","value":{},"smoothing":{},"easing":{}},"rotationInputBlending":{"label":"Rotation + Input Blending","value":{},"smoothing":{},"easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"$type":"Reset.Core.ChangeMovementSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[{"valueA":{"_name":"airJumpsRemaining","_targetVariableID":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d"},"Operation":2,"valueB":{"_value":1},"$type":"NodeCanvas.Tasks.Actions.SetInt"}]},"foldEnter":true,"foldExit":true,"_color":{"r":0.4117647,"g":0.945098,"b":0.254902,"a":1.0},"_name":"Run Jump","_position":{"x":1013.465,"y":94.1021},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"25"},{"_subTree":{"_value":1},"_variablesMap":[{"_targetSubGraphVariableID":"e1cfd0be-7f55-420d-bdd8-e72531fc61ba","_canWrite":true,"_type":"UnityEngine.Transform","_name":"mainCamera","_targetVariableID":"2bc9b3d6-dcbe-45de-8f8c-911adedd6ab0"},{"_targetSubGraphVariableID":"c4e68b75-5129-428c-8177-abb7b38986f5","_canWrite":true,"_type":"PlayerFacingDirection","_value":{"$content":0,"$type":"PlayerFacingDirection"}}],"_position":{"x":-510.8982,"y":192.1267},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_subTree":{"_value":2},"_tag":"","_position":{"x":88.88627,"y":313.6888},"_comment":"","$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_conditionList":{"conditions":[]},"_actionList":{"executionMode":1,"actions":[{"targetVector":{"_name":"outputMoveDirection","_targetVariableID":"3b9833f5-870a-4182-9824-e31a9896eec2"},"x":{"_name":""},"y":{"_name":"_currentYMoveDirection"},"z":{"_name":""},"$type":"NodeCanvas.Tasks.Actions.DecomposeVector"}]},"_position":{"x":40.44446,"y":196.4959},"$type":"NodeCanvas.StateMachines.OnFSMUpdate"},{"_onEnterList":{"executionMode":1,"actions":[]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"_color":{"r":0.4980392,"g":1.0,"b":0.9803922,"a":1.0},"_name":"Airborne Standby","_position":{"x":1509.989,"y":-548.8954},"$type":"NodeCanvas.StateMachines.SuperActionState"},{"_subTree":{"_value":3},"_position":{"x":1125.669,"y":-308.5995},"$type":"NodeCanvas.StateMachines.ConcurrentSubTree"},{"_subFSM":{"_value":4},"_position":{"x":175.7607,"y":577.6639},"$type":"NodeCanvas.StateMachines.ConcurrentSubFSM"}],"connections":[{"_condition":{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"conditions":[{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},{"actionName":{"_value":"Jump"},"actionPhase":{"_value":4},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},{"observerLabel":{"_value":"itemdrop"},"outputHitTo":{},"deactivateOnFinish":false,"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckEnvironmentObserver"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"21"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple Launch"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3, @@ -282,7 +435,7 @@ MonoBehaviour: _version: 3.31 _category: _comments: - _translation: {x: 739, y: 476} + _translation: {x: 524, y: 451} _zoomFactor: 1 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs b/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs index 990e7ad..b2abc7a 100644 --- a/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs @@ -42,118 +42,29 @@ namespace NodeCanvas.Tasks.Actions { //Call EndAction() to mark the action as finished, either in success or failure. //EndAction can be called from anywhere. protected override void OnExecute(){ - UpdateOrbitFollowValue(orbitFollowTop, ref CameraSettingsProcessor.values.orbitFollowTopHeight, ref CameraSettingsProcessor.values.orbitFollowTopRadius); - UpdateOrbitFollowValue(orbitFollowCenter, ref CameraSettingsProcessor.values.orbitFollowCenterHeight, ref CameraSettingsProcessor.values.orbitFollowCenterRadius); - UpdateOrbitFollowValue(orbitFollowBottom, ref CameraSettingsProcessor.values.orbitFollowBottomHeight, ref CameraSettingsProcessor.values.orbitFollowBottomRadius); + OrbitalFollowValueGroup.UpdateValue(orbitFollowTop, ref CameraSettingsProcessor.data.orbitFollowTopHeight.value, ref CameraSettingsProcessor.original.orbitFollowTopRadius.value); + OrbitalFollowValueGroup.UpdateValue(orbitFollowCenter, ref CameraSettingsProcessor.data.orbitFollowCenterHeight.value, ref CameraSettingsProcessor.original.orbitFollowCenterRadius.value); + OrbitalFollowValueGroup.UpdateValue(orbitFollowBottom, ref CameraSettingsProcessor.data.orbitFollowBottomHeight.value, ref CameraSettingsProcessor.original.orbitFollowBottomRadius.value); - UpdateVector3Value(cameraOffset, ref CameraSettingsProcessor.values.cameraOffsetOffset); + Vector3ValueGroup.UpdateValue(cameraOffset, ref CameraSettingsProcessor.data.cameraOffsetOffset.value, ref CameraSettingsProcessor.original.cameraOffsetOffset.value); - UpdateVector3Value(orbitPositionDamping, ref CameraSettingsProcessor.values.orbitPositionDamping); - UpdateVector3Value(orbitTargetOffset, ref CameraSettingsProcessor.values.orbitTargetOffset); + Vector3ValueGroup.UpdateValue(orbitPositionDamping, ref CameraSettingsProcessor.data.orbitPositionDamping.value, ref CameraSettingsProcessor.original.cameraOffsetOffset.value); + Vector3ValueGroup.UpdateValue(orbitTargetOffset, ref CameraSettingsProcessor.data.orbitTargetOffset.value, ref CameraSettingsProcessor.original.cameraOffsetOffset.value); - UpdateVector2Value(screenPosition, ref CameraSettingsProcessor.values.rotationComposerScreenPos); - UpdateFloatValue(fieldOfView, ref CameraSettingsProcessor.values.mainFieldOfView); + Vector2ValueGroup.UpdateValue(screenPosition, ref CameraSettingsProcessor.data.rotationComposerScreenPos.value, ref CameraSettingsProcessor.original.rotationComposerScreenPos.value); + FloatValueGroup.UpdateValue(fieldOfView, ref CameraSettingsProcessor.data.mainFieldOfView.value, ref CameraSettingsProcessor.original.mainFieldOfView.value); - UpdateFloatValue(axisLookXGain, ref CameraSettingsProcessor.values.axisLookGainX); - UpdateFloatValue(axisLookYGain, ref CameraSettingsProcessor.values.axisLookGainY); + FloatValueGroup.UpdateValue(axisLookXGain, ref CameraSettingsProcessor.data.axisLookGainX.value, ref CameraSettingsProcessor.original.axisLookGainX.value); + FloatValueGroup.UpdateValue(axisLookYGain, ref CameraSettingsProcessor.data.axisLookGainY.value, ref CameraSettingsProcessor.original.axisLookGainY.value); - UpdateBoolValue(enableXAxis, ref CameraSettingsProcessor.values.axisLookEnabledX); - UpdateBoolValue(enableYAxis, ref CameraSettingsProcessor.values.axisLookEnabledY); + BoolValueGroup.UpdateValue(enableXAxis, ref CameraSettingsProcessor.data.axisLookEnabledX.value, ref CameraSettingsProcessor.original.axisLookEnabledX.value); + BoolValueGroup.UpdateValue(enableYAxis, ref CameraSettingsProcessor.data.axisLookEnabledY.value, ref CameraSettingsProcessor.original.axisLookEnabledY.value); EndAction(true); } - public void UpdateVector3Value(Vector3ValueGroup valueGroup, ref CameraSettingSingleValue targetProperty){ - switch (valueGroup.changeX) { - case ValueChangeAction.NewValue: - targetProperty.targetValue.x = valueGroup.newValue.x; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue.x = targetProperty.originalValue.x; - break; - } - - switch (valueGroup.changeY) { - case ValueChangeAction.NewValue: - targetProperty.targetValue.y = valueGroup.newValue.y; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue.y = targetProperty.originalValue.y; - break; - } - - switch (valueGroup.changeZ) { - case ValueChangeAction.NewValue: - targetProperty.targetValue.z = valueGroup.newValue.z; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue.z = targetProperty.originalValue.z; - break; - } - } - public void UpdateVector2Value(Vector2ValueGroup valueGroup, ref CameraSettingSingleValue targetProperty){ - switch (valueGroup.changeX) { - case ValueChangeAction.NewValue: - targetProperty.targetValue.x = valueGroup.newValue.x; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue.x = targetProperty.originalValue.x; - break; - } - - switch (valueGroup.changeY) { - case ValueChangeAction.NewValue: - targetProperty.targetValue.y = valueGroup.newValue.y; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue.y = targetProperty.originalValue.y; - break; - } - } - - public void UpdateOrbitFollowValue(OrbitalFollowValueGroup valueGroup, ref CameraSettingSingleValue targetHeight, ref CameraSettingSingleValue targetRadius){ - switch (valueGroup.changeHeight) { - case ValueChangeAction.NewValue: - targetHeight.targetValue = valueGroup.height; - break; - case ValueChangeAction.ResetValue: - targetHeight.targetValue = targetHeight.originalValue; - break; - } - - switch (valueGroup.changeRadius) { - case ValueChangeAction.NewValue: - targetRadius.targetValue = valueGroup.radius; - break; - case ValueChangeAction.ResetValue: - targetRadius.targetValue = targetRadius.originalValue; - break; - } - } - - public void UpdateBoolValue(BoolValueGroup valueGroup, ref CameraSettingSingleValue targetProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NewValue: - targetProperty.targetValue = valueGroup.value; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue = targetProperty.originalValue; - break; - } - } - - public void UpdateFloatValue(FloatValueGroup valueGroup, ref CameraSettingSingleValue targetProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NewValue: - targetProperty.targetValue = valueGroup.value.value; - break; - case ValueChangeAction.ResetValue: - targetProperty.targetValue = targetProperty.originalValue; - break; - } - } //Called once per frame while the action is active. protected override void OnUpdate() { diff --git a/Assets/Scripts/Core/Graph Tasks/ChangeMovementSettings.cs b/Assets/Scripts/Core/Graph Tasks/ChangeMovementSettings.cs index f1b895c..81ab5d5 100644 --- a/Assets/Scripts/Core/Graph Tasks/ChangeMovementSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/ChangeMovementSettings.cs @@ -2,13 +2,15 @@ using System; using NodeCanvas.Framework; using ParadoxNotion.Design; using Reset.Units; +using Sirenix.OdinInspector.Editor; using UnityEngine; namespace Reset.Core { [Category("Reset")] [Description("Commits movement unit changes to the handler.")] public class ChangeMovementSettings : ActionTask { - // Move Speed + + [ParadoxNotion.Design.Header("Speed")] public FloatValueGroup moveSpeed = new (newLabel: "Move Speed"); public FloatValueGroup moveSpeedSoothing = new (newLabel: "Move Speed Smoothing"); @@ -19,15 +21,7 @@ namespace Reset.Core { public FloatValueGroup deaccelerationSmoothing = new (newLabel: "Deacceleration Smoothing"); // public CurveValueGroup deaccelerationCurve = new (newLabel: "Deacceleration Curve"); // Currently unused, may return - // Direction - [Space(5)] - public Vector3ValueGroup feedNewDirection = new Vector3ValueGroup("Feed New Direction"); - public float newDirectionStrength; - [Space(5)] - public Vector2 addDirectionFromInput; - public float addInputStrength; - [SliderField(0,1)] - public float addInputPriorty; + // Jumping [ParadoxNotion.Design.Header("Jumping")] @@ -63,48 +57,41 @@ namespace Reset.Core { //Call EndAction() to mark the action as finished, either in success or failure. //EndAction can be called from anywhere. protected override void OnExecute() { - // Direction - UpdateFloatValue(airDirectionDecay, ref agent.data.airDirectionDecay, ref agent.data.airDirectionDecay); - UpdateFloatValue(accelerationSmoothing, ref agent.data.accelerationSmoothing, ref agent.defaultData.accelerationSmoothing); - UpdateFloatValue(deaccelerationSmoothing, ref agent.data.deaccelerationSmoothing, ref agent.defaultData.deaccelerationSmoothing); - // UpdateCurveProperty(deaccelerationCurve, ref agent.data.deaccelerationCurve, ref agent.defaultData.deaccelerationCurve); // Currently unused, may return - - // Direction from value - // Check that feedDir is not changed - UpdateVector3Value(feedNewDirection, ref feedDir, ref feedDir); - - // If there's a direciton add it to the player for a frame - if (feedDir != Vector3.zero) { - agent.AddToCurrentDirection(agent.transform.rotation * feedDir.normalized, newDirectionStrength); - // Reset the fed direction after it's added so future runs don't have - feedDir = Vector3.zero; - } - - // Direction from controller input - if (addDirectionFromInput != Vector2.zero){ - agent.OverwriteDirectionFromInput(new Vector3(addDirectionFromInput.x, addDirectionFromInput.y), addInputPriorty, addInputStrength); - } - - // Move Speed - UpdateFloatValue(moveSpeed, ref agent.data.moveSpeed, ref agent.defaultData.moveSpeed); - UpdateFloatValue(moveSpeedSoothing, ref agent.data.moveSpeedSoothing, ref agent.defaultData.moveSpeedSoothing); - - // Jump - UpdateFloatValue(jumpPower, ref agent.data.jumpPower, ref agent.defaultData.jumpPower); - UpdateFloatValue(jumpPowerDecay, ref agent.data.jumpPowerDecay, ref agent.defaultData.jumpPowerDecay); - - // Gravity - UpdateFloatValue(gravityPower, ref agent.data.gravityPower, ref agent.defaultData.gravityPower); - UpdateFloatValue(gravityMax, ref agent.data.gravityMax, ref agent.defaultData.gravityMax); - UpdateFloatValue(gravityAcceleration, ref agent.data.gravityAcceleration, ref agent.defaultData.gravityAcceleration); - UpdateFloatValue(gravityScale, ref agent.data.gravityScale, ref agent.defaultData.gravityScale); - UpdateFloatValue(settingsChangeSmoothing, ref agent.data.settingsChangeSmoothing, ref agent.defaultData.settingsChangeSmoothing); - - // Rotation - UpdateEnumValue(rotateFacing, ref agent.data.rotateFacing, ref agent.defaultData.rotateFacing); - UpdateFloatValue(rotationSpeed, ref agent.data.rotationSpeed, ref agent.defaultData.rotationSpeed); - UpdateFloatValue(rotationSmoothing, ref agent.data.rotationSmoothing, ref agent.defaultData.rotationSmoothing); - UpdateFloatValue(rotationInputBlending, ref agent.data.rotationInputBlending, ref agent.defaultData.rotationInputBlending); + // // Direction + // FloatValueGroup.UpdateValue(airDirectionDecay, ref agent.data.airDirectionDecay, ref agent.defaultData.airDirectionDecay); + // FloatValueGroup.ChangeSmoothingEasing(airDirectionDecay, + // ref agent.smoothing.airDirectionDecay, + // ref agent.easing.airDirectionDecay, + // ref agent.defaultSmoothing.airDirectionDecay, + // ref agent.defaultEasing.airDirectionDecay + // ); + // + // UpdateFloatValue(accelerationSmoothing, ref agent.data.accelerationSmoothing, ref agent.defaultData.accelerationSmoothing); + // UpdateFloatValue(deaccelerationSmoothing, ref agent.data.deaccelerationSmoothing, ref agent.defaultData.deaccelerationSmoothing); + // // UpdateCurveProperty(deaccelerationCurve, ref agent.data.deaccelerationCurve, ref agent.defaultData.deaccelerationCurve); // Currently unused, may return + // + // + // + // // Move Speed + // UpdateFloatValue(moveSpeed, ref agent.data.moveSpeed, ref agent.defaultData.moveSpeed); + // UpdateFloatValue(moveSpeedSoothing, ref agent.data.moveSpeedSoothing, ref agent.defaultData.moveSpeedSoothing); + // + // // Jump + // UpdateFloatValue(jumpPower, ref agent.data.jumpPower, ref agent.defaultData.jumpPower); + // UpdateFloatValue(jumpPowerDecay, ref agent.data.jumpPowerDecay, ref agent.defaultData.jumpPowerDecay); + // + // // Gravity + // UpdateFloatValue(gravityPower, ref agent.data.gravityPower, ref agent.defaultData.gravityPower); + // UpdateFloatValue(gravityMax, ref agent.data.gravityMax, ref agent.defaultData.gravityMax); + // UpdateFloatValue(gravityAcceleration, ref agent.data.gravityAcceleration, ref agent.defaultData.gravityAcceleration); + // UpdateFloatValue(gravityScale, ref agent.data.gravityScale, ref agent.defaultData.gravityScale); + // UpdateFloatValue(settingsChangeSmoothing, ref agent.data.settingsChangeSmoothing, ref agent.defaultData.settingsChangeSmoothing); + // + // // Rotation + // UpdateEnumValue(rotateFacing, ref agent.data.rotateFacing, ref agent.defaultData.rotateFacing); + // UpdateFloatValue(rotationSpeed, ref agent.data.rotationSpeed, ref agent.defaultData.rotationSpeed); + // UpdateFloatValue(rotationSmoothing, ref agent.data.rotationSmoothing, ref agent.defaultData.rotationSmoothing); + // UpdateFloatValue(rotationInputBlending, ref agent.data.rotationInputBlending, ref agent.defaultData.rotationInputBlending); // Rotation from value if (feedNewRotation.value != Vector3.zero) { @@ -133,103 +120,5 @@ namespace Reset.Core { protected override void OnPause() { } - - public void UpdateCurveProperty(CurveValueGroup valueGroup, ref AnimationCurve targetProperty, ref AnimationCurve defaultProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NoChange: - break; - case ValueChangeAction.NewValue: - targetProperty = valueGroup.newValue; - break; - case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; - break; - default: - throw new ArgumentOutOfRangeException(); - } - } - - public void UpdateVector3Value(Vector3ValueGroup valueGroup, ref Vector3 targetProperty, ref Vector3 defaultProperty){ - switch (valueGroup.changeX) { - case ValueChangeAction.NewValue: - targetProperty.x = valueGroup.newValue.x; - break; - case ValueChangeAction.ResetValue: - targetProperty.x = defaultProperty.x; - break; - } - - switch (valueGroup.changeY) { - case ValueChangeAction.NewValue: - targetProperty.y = valueGroup.newValue.y; - break; - case ValueChangeAction.ResetValue: - targetProperty.y = defaultProperty.y; - break; - } - - switch (valueGroup.changeZ) { - case ValueChangeAction.NewValue: - targetProperty.z = valueGroup.newValue.z; - break; - case ValueChangeAction.ResetValue: - targetProperty.z = defaultProperty.z; - break; - } - } - - public void UpdateVector2Value(Vector2ValueGroup valueGroup, ref Vector2 targetProperty, ref Vector2 defaultProperty){ - switch (valueGroup.changeX) { - case ValueChangeAction.NewValue: - targetProperty.x = valueGroup.newValue.x; - break; - case ValueChangeAction.ResetValue: - targetProperty.x = defaultProperty.x; - break; - } - - switch (valueGroup.changeY) { - case ValueChangeAction.NewValue: - targetProperty.y = valueGroup.newValue.y; - break; - case ValueChangeAction.ResetValue: - targetProperty.y = defaultProperty.y; - break; - } - } - - - public void UpdateBoolValue(BoolValueGroup valueGroup, ref bool targetProperty, ref bool defaultProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NewValue: - targetProperty = valueGroup.value; - break; - case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; - break; - } - } - - public void UpdateEnumValue(EnumValueGroup valueGroup, ref Enum targetProperty, ref Enum defaultProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NewValue: - targetProperty = valueGroup.newValue; - break; - case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; - break; - } - } - - public void UpdateFloatValue(FloatValueGroup valueGroup, ref float targetProperty, ref float defaultProperty){ - switch (valueGroup.changeValue) { - case ValueChangeAction.NewValue: - targetProperty = valueGroup.value.value; - break; - case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; - break; - } - } } } \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes.meta b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes.meta new file mode 100644 index 0000000..813cb1b --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7879b20d5bcdf974c823d1919491e026 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs new file mode 100644 index 0000000..3103685 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs @@ -0,0 +1,67 @@ +using NodeCanvas.Framework; +using ParadoxNotion.Design; +using Reset.Core; +using UnityEngine; + + +namespace Reset.Units { + + [Category("Reset/Movement")] + public class ChangeDirectionSettings : ActionTask { + // Direction + [Space(5)] + public Vector3ValueGroup feedNewDirection = new Vector3ValueGroup("Feed New Direction"); + public float newDirectionStrength; + [Space(5)] + public Vector2 addDirectionFromInput; + public float addInputStrength; + [SliderField(0,1)] + public float addInputPriorty; + + //Use for initialization. This is called only once in the lifetime of the task. + //Return null if init was successfull. Return an error string otherwise + protected override string OnInit() { + return null; + } + + //This is called once each time the task is enabled. + //Call EndAction() to mark the action as finished, either in success or failure. + //EndAction can be called from anywhere. + protected override void OnExecute() { + // Direction from value + // Check that feedDir is not changed + // UpdateVector3Value(feedNewDirection, ref feedDir, ref feedDir); + // + // Vector3ValueGroup.ResolvedValue(feedNewDirection, ref feedDir, ref feedDir); + // + // // If there's a direciton add it to the player for a frame + // if (feedDir != Vector3.zero) { + // agent.AddToCurrentDirection(agent.transform.rotation * feedDir.normalized, newDirectionStrength); + // // Reset the fed direction after it's added so future runs don't have + // feedDir = Vector3.zero; + // } + + // Direction from controller input + if (addDirectionFromInput != Vector2.zero){ + agent.OverwriteDirectionFromInput(new Vector3(addDirectionFromInput.x, addDirectionFromInput.y), addInputPriorty, addInputStrength); + } + + EndAction(true); + } + + //Called once per frame while the action is active. + protected override void OnUpdate() { + + } + + //Called when the task is disabled. + protected override void OnStop() { + + } + + //Called when the task is paused. + protected override void OnPause() { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs.meta b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs.meta new file mode 100644 index 0000000..59e22e2 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e97f34b81238a9548b0bf4f5b68c8f17 \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs new file mode 100644 index 0000000..da3abd8 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs @@ -0,0 +1,54 @@ +using NodeCanvas.Framework; +using ParadoxNotion.Design; +using Reset.Core; + + +namespace Reset.Units { + + [Category("Reset/Movement")] + public class ChangeGravitySettings : ActionTask{ + public FloatValueGroup jumpPower = new FloatValueGroup("Jump Power"); + public FloatValueGroup jumpPowerDecay = new FloatValueGroup("Jump Power Decay"); + + public FloatValueGroup gravityPower = new FloatValueGroup("Jump Power"); + public FloatValueGroup gravityMax = new FloatValueGroup("Jump Power"); + public FloatValueGroup gravityAcceleration = new FloatValueGroup("Jump Power"); + public FloatValueGroup gravityScale = new FloatValueGroup("Jump Power"); + + //Use for initialization. This is called only once in the lifetime of the task. + //Return null if init was successfull. Return an error string otherwise + protected override string OnInit() { + return null; + } + + //This is called once each time the task is enabled. + //Call EndAction() to mark the action as finished, either in success or failure. + //EndAction can be called from anywhere. + protected override void OnExecute() { + // Jump + FloatValueGroup.UpdateValue(jumpPower, ref agent.data.jumpPower, ref agent.defaultData.jumpPower); + FloatValueGroup.UpdateValue(jumpPowerDecay, ref agent.data.jumpPowerDecay, ref agent.defaultData.jumpPowerDecay); + + // Gravity + FloatValueGroup.UpdateValue(gravityPower, ref agent.data.gravityPower, ref agent.defaultData.gravityPower); + FloatValueGroup.UpdateValue(gravityMax, ref agent.data.gravityMax, ref agent.defaultData.gravityMax); + FloatValueGroup.UpdateValue(gravityAcceleration, ref agent.data.gravityAcceleration, ref agent.defaultData.gravityAcceleration); + FloatValueGroup.UpdateValue(gravityScale, ref agent.data.gravityScale, ref agent.defaultData.gravityScale); + } + + //Called once per frame while the action is active. + protected override void OnUpdate() { + + } + + //Called when the task is disabled. + protected override void OnStop() { + + } + + //Called when the task is paused. + protected override void OnPause() { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs.meta b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs.meta new file mode 100644 index 0000000..8fb3b0c --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 67c9324e429e09f4da157ab85dadacff \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs new file mode 100644 index 0000000..407d204 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs @@ -0,0 +1,38 @@ +using NodeCanvas.Framework; +using ParadoxNotion.Design; + + +namespace Reset.Units { + + [Category("Reset/Movement")] + public class ChangeMoveSpeedSettings : ActionTask { + + //Use for initialization. This is called only once in the lifetime of the task. + //Return null if init was successfull. Return an error string otherwise + protected override string OnInit() { + return null; + } + + //This is called once each time the task is enabled. + //Call EndAction() to mark the action as finished, either in success or failure. + //EndAction can be called from anywhere. + protected override void OnExecute() { + EndAction(true); + } + + //Called once per frame while the action is active. + protected override void OnUpdate() { + + } + + //Called when the task is disabled. + protected override void OnStop() { + + } + + //Called when the task is paused. + protected override void OnPause() { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs.meta b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs.meta new file mode 100644 index 0000000..12e9450 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c1f858e8bdedb4f46ac3e10c0dccde29 \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs new file mode 100644 index 0000000..4259129 --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs @@ -0,0 +1,38 @@ +using NodeCanvas.Framework; +using ParadoxNotion.Design; + + +namespace Reset.Units { + + [Category("Reset/Movement")] + public class ChangeRotationSettings : ActionTask { + + //Use for initialization. This is called only once in the lifetime of the task. + //Return null if init was successfull. Return an error string otherwise + protected override string OnInit() { + return null; + } + + //This is called once each time the task is enabled. + //Call EndAction() to mark the action as finished, either in success or failure. + //EndAction can be called from anywhere. + protected override void OnExecute() { + EndAction(true); + } + + //Called once per frame while the action is active. + protected override void OnUpdate() { + + } + + //Called when the task is disabled. + protected override void OnStop() { + + } + + //Called when the task is paused. + protected override void OnPause() { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs.meta b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs.meta new file mode 100644 index 0000000..ded50cc --- /dev/null +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2af547219746e194f97217fe24cfb8cd \ No newline at end of file diff --git a/Assets/Scripts/Core/ValueGroup.cs b/Assets/Scripts/Core/ValueGroup.cs index 0cb5f7b..dd9d0da 100644 --- a/Assets/Scripts/Core/ValueGroup.cs +++ b/Assets/Scripts/Core/ValueGroup.cs @@ -1,496 +1,311 @@ using System; - -#if UNITY_EDITOR -using NodeCanvas.Editor; -#endif - using NodeCanvas.Framework; -using ParadoxNotion.Design; -using UnityEditor; using UnityEngine; namespace Reset.Core{ - // Individual bool setting for each ring. Three of these will be used. - public struct OrbitalFollowValueGroup{ - public string label; - - public ValueChangeAction changeHeight; - public float height; - - public ValueChangeAction changeRadius; - public float radius; + public abstract class ValueGroup{ + public interface ISmoothable{ + public BBParameter changeEasing{ get; set; } + public BBParameter changeSmoothing{ get; set; } - public OrbitalFollowValueGroup(string newLabel){ - label = newLabel; - changeHeight = ValueChangeAction.NoChange; - height = 0f; - changeRadius = ValueChangeAction.NoChange; - radius = 0f; + public BBParameter smoothing { get; set; } + public BBParameter easing{ get; set; } + } + + public static void ChangeSmoothingEasing(ISmoothable valueGroup, ref float targetSmoothing, + ref float targetEasing, ref float defaultSmoothing, ref float defaultEasing){ + switch (valueGroup.changeSmoothing.value) { + case ValueChangeAction.NewValue: + targetSmoothing = valueGroup.smoothing.value; + break; + case ValueChangeAction.ResetValue: + targetSmoothing = defaultSmoothing; + break; + } + + switch (valueGroup.changeEasing.value) { + case ValueChangeAction.NewValue: + targetEasing = valueGroup.easing.value; + break; + case ValueChangeAction.ResetValue: + targetEasing = defaultEasing; + break; + } } } - - // Enum options for individual camera settings + + // Enum options for individual settings public enum ValueChangeAction{ NoChange, NewValue, ResetValue, RelativeValue, // Placeholder for using as altering existing value } - - public struct CurveValueGroup{ + + // Individual bool setting for each ring. Three of these will be used. + public struct OrbitalFollowValueGroup : ValueGroup.ISmoothable{ public string label; - public AnimationCurve newValue; - public ValueChangeAction changeValue; + public BBParameter changeHeight; + public BBParameter height; + + public BBParameter changeRadius; + public BBParameter radius; + + public BBParameter changeEasing{ get; set; } + public BBParameter changeSmoothing{ get; set; } + public BBParameter smoothing{ get; set; } + public BBParameter easing{ get; set; } + + public OrbitalFollowValueGroup(string newLabel){ + label = newLabel; + + changeHeight = ValueChangeAction.NoChange; + height = 0f; + changeRadius = ValueChangeAction.NoChange; + radius = 0f; + + changeSmoothing = ValueChangeAction.NoChange; + smoothing = .1f; + + changeEasing = ValueChangeAction.NoChange; + easing = 1f; + } + + public static void UpdateValue(OrbitalFollowValueGroup valueGroup, ref float targetProperty, ref float defaultProperty){ + switch (valueGroup.changeHeight.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.height.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; + } + + switch (valueGroup.changeRadius.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.radius.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; + } + } + } + + public struct CurveValueGroup{ // Done + public string label; + public BBParameter value; + + public BBParameter changeValue; public CurveValueGroup(string newLabel){ changeValue = ValueChangeAction.NoChange; - newValue = new AnimationCurve(); + value = new AnimationCurve(); label = newLabel; } + + public static void UpdateValue(CurveValueGroup valueGroup, ref AnimationCurve targetProperty, ref AnimationCurve defaultProperty){ + switch (valueGroup.changeValue.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.value.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; + } + } } - public struct EnumValueGroup{ + public struct EnumValueGroup{ // Done public string label; - public Enum newValue; + public BBParameter value; - public ValueChangeAction changeValue; + public BBParameter changeValue; public EnumValueGroup(string newLabel, Enum enumType){ changeValue = ValueChangeAction.NoChange; - newValue = enumType; + value = enumType; label = newLabel; - - + } + + public static void UpdateValue(EnumValueGroup valueGroup, ref Enum targetProperty, ref Enum defaultProperty){ + switch (valueGroup.changeValue.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.value.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; + } } } - - public struct Vector3ValueGroup{ + + public struct Vector3ValueGroup{ // Done public string label; - public Vector3 newValue; - - public ValueChangeAction changeX; - public ValueChangeAction changeY; - public ValueChangeAction changeZ; - + public BBParameter value; + + public BBParameter changeX; + public BBParameter changeY; + public BBParameter changeZ; + public Vector3ValueGroup(string newLabel){ changeX = ValueChangeAction.NoChange; changeY = ValueChangeAction.NoChange; changeZ = ValueChangeAction.NoChange; - newValue = Vector3.zero; + value = new BBParameter{ + value = Vector3.zero + }; + label = newLabel; } + + public static void UpdateValue(Vector3ValueGroup valueGroup, ref Vector3 targetProperty, ref Vector3 defaultProperty){ + switch (valueGroup.changeX.value) { + case ValueChangeAction.NewValue: + targetProperty.x = valueGroup.value.value.x; + break; + case ValueChangeAction.ResetValue: + targetProperty.x = defaultProperty.x; + break; + } + + switch (valueGroup.changeY.value) { + case ValueChangeAction.NewValue: + targetProperty.y = valueGroup.value.value.y; + break; + case ValueChangeAction.ResetValue: + targetProperty.y = defaultProperty.y; + break; + } + + switch (valueGroup.changeZ.value) { + case ValueChangeAction.NewValue: + targetProperty.z = valueGroup.value.value.z; + break; + case ValueChangeAction.ResetValue: + targetProperty.z = defaultProperty.z; + break; + } + } } - public struct Vector2ValueGroup{ + public struct Vector2ValueGroup : ValueGroup.ISmoothable{ // Done public string label; - public Vector2 newValue; + public BBParameter value; - public ValueChangeAction changeX; - public ValueChangeAction changeY; + public BBParameter changeEasing{ get; set; } + public BBParameter changeSmoothing{ get; set; } + public BBParameter smoothing{ get; set; } + public BBParameter easing{ get; set; } + public BBParameter changeX; + public BBParameter changeY; + public Vector2ValueGroup(string newLabel){ changeX = ValueChangeAction.NoChange; changeY = ValueChangeAction.NoChange; - newValue = Vector2.zero; + value = new BBParameter{ + value = Vector2.zero + }; + label = newLabel; + + changeEasing = ValueChangeAction.NoChange; + changeSmoothing = ValueChangeAction.NoChange; + smoothing = 0; + easing = 0; } + + public static void UpdateValue(Vector2ValueGroup valueGroup, ref Vector2 targetProperty, ref Vector2 defaultProperty){ + switch (valueGroup.changeX.value) { + case ValueChangeAction.NewValue: + targetProperty.x = valueGroup.value.value.x; + break; + case ValueChangeAction.ResetValue: + targetProperty.x = defaultProperty.x; + break; + + } + + switch (valueGroup.changeY.value) { + case ValueChangeAction.NewValue: + targetProperty.y = valueGroup.value.value.y; + break; + case ValueChangeAction.ResetValue: + targetProperty.y = defaultProperty.y; + break; + } + } + + } - public struct FloatValueGroup{ - public string label; - // public float value; - public BBParameter value; - public ValueChangeAction changeValue; + public class FloatValueGroup : ValueGroup.ISmoothable{ // Done + public string label; + + public BBParameter changeValue; + public BBParameter value; + + public BBParameter changeEasing{ get; set; } + public BBParameter changeSmoothing{ get; set; } + public BBParameter smoothing { get; set; } + public BBParameter easing{ get; set; } public FloatValueGroup(string newLabel){ label = newLabel; value = new BBParameter().value = 0f; changeValue = ValueChangeAction.NoChange; + + changeSmoothing = ValueChangeAction.NoChange; + smoothing = 0f; + + changeEasing = ValueChangeAction.NoChange; + easing = 0f; + } + + public static void UpdateValue(FloatValueGroup valueGroup, ref float targetProperty, ref float defaultProperty){ + switch (valueGroup.changeValue.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.value.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; + } } } public struct BoolValueGroup{ public string label; - public bool value; + public BBParameter value; - public ValueChangeAction changeValue; + public BBParameter changeValue; public BoolValueGroup(string newLabel){ label = newLabel; value = true; changeValue = ValueChangeAction.NoChange; } - } - -#if UNITY_EDITOR - public class BoolValueGroupDrawer : ObjectDrawer { - public override BoolValueGroup OnGUI(GUIContent _content, BoolValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 50; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(80.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeValue = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue); - - // Create the value/disabled information field - if (_instance.changeValue == ValueChangeAction.NewValue){ - _instance.value = EditorGUILayout.Toggle(_instance.value, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeValue == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - } - - public class CurveVlueGroupDrawer : ObjectDrawer { - public override CurveValueGroup OnGUI(GUIContent _content, CurveValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 50; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(80.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeValue = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue); - - // Create the value/disabled information field - if (_instance.changeValue == ValueChangeAction.NewValue){ - _instance.newValue = EditorGUILayout.CurveField(_instance.newValue, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeValue == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - } - - public class EnumValueGroupDrawer : ObjectDrawer{ - public override EnumValueGroup OnGUI(GUIContent _content, EnumValueGroup _instance){ - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(200.0f), - GUILayout.MinWidth(100.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeValue = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue); - - // Create the value/disabled information field - if (_instance.changeValue == ValueChangeAction.NewValue){ - _instance.newValue = EditorGUILayout.EnumPopup("", instance.newValue, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeValue == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - - } - - public class FloatValueGroupDrawer : ObjectDrawer { - public override FloatValueGroup OnGUI(GUIContent _content, FloatValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 50; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(80.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeValue = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue); - - - // Create the value/disabled information field - if (_instance.changeValue == ValueChangeAction.NewValue){ - // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); - BBParameterEditor.ParameterField("", _instance.value); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeValue == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); + public static void UpdateValue(BoolValueGroup valueGroup, ref bool targetProperty, ref bool defaultProperty){ + switch (valueGroup.changeValue.value) { + case ValueChangeAction.NewValue: + targetProperty = valueGroup.value.value; + break; + case ValueChangeAction.ResetValue: + targetProperty = defaultProperty; + break; } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; } } - - public class Vector3ValueGroupDrawer : ObjectDrawer { - public override Vector3ValueGroup OnGUI(GUIContent _content, Vector3ValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 20; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(300.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeX = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeX); - - // Create the value/disabled information field - if (_instance.changeX == ValueChangeAction.NewValue){ - _instance.newValue.x = EditorGUILayout.FloatField(_instance.newValue.x, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeX == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // It do what it do. - GUILayout.Space(5); - - // Create the y settings enum - _instance.changeY = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeY); - - // Create the value/disabled information field - if (_instance.changeY == ValueChangeAction.NewValue){ - _instance.newValue.y = EditorGUILayout.FloatField(_instance.newValue.y, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeY == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // It do what it do. - GUILayout.Space(5); - - // Create the y settings enum - _instance.changeZ = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeZ); - - // Create the value/disabled information field - if (_instance.changeZ == ValueChangeAction.NewValue){ - _instance.newValue.z = EditorGUILayout.FloatField(_instance.newValue.z, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeZ == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - } - - public class Vector2ValueGroupDrawer : ObjectDrawer { - public override Vector2ValueGroup OnGUI(GUIContent _content, Vector2ValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 50; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(300.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(200.0f), - }; - - // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options - GUILayout.BeginVertical(); - GUILayout.Label(_instance.label, labelOptions); - GUILayout.BeginHorizontal(); - - // Create the x settings enum - _instance.changeX = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeX); - - // Create the value/disabled information field - if (_instance.changeX == ValueChangeAction.NewValue){ - _instance.newValue.x = EditorGUILayout.FloatField(_instance.newValue.x, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeX == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // It do what it do. - GUILayout.Space(5); - - // Create the y settings enum - _instance.changeY = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeY); - - // Create the value/disabled information field - if (_instance.changeY == ValueChangeAction.NewValue){ - _instance.newValue.y = EditorGUILayout.FloatField(_instance.newValue.y, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeY == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - GUILayout.EndVertical(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - } - - // Custom editor for each orbital follow ring setting - public class OrbitalFollowValueGroupDrawer : ObjectDrawer{ - public override OrbitalFollowValueGroup OnGUI(GUIContent _content, OrbitalFollowValueGroup _instance){ - // Remove label for floats - EditorGUIUtility.labelWidth = 1; - - // Set layout options for the label and the float fields - GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(300.0f), - GUILayout.MinWidth(20.0f), - GUILayout.ExpandWidth(true), - }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(60.0f), - }; - - // Start a Horiztonal Section - GUILayout.BeginHorizontal(); - - // Add the left side label - GUILayout.Label(_instance.label, labelOptions); - - // Create the height settings enum - _instance.changeHeight = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeHeight); - - // Create the value/disabled information field - if (_instance.changeHeight == ValueChangeAction.NewValue){ - _instance.height = EditorGUILayout.FloatField(_instance.height, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeHeight == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // It do what it do. - GUILayout.Space(5); - - // Create the radius settings enum - _instance.changeRadius = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeRadius); - - // Create the value/disabled information field - if (_instance.changeRadius == ValueChangeAction.NewValue){ - _instance.radius = EditorGUILayout.FloatField(_instance.radius, floatOptions); - } else { - EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.TextField(_instance.changeRadius == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); - EditorGUI.EndDisabledGroup(); - } - - // Close this line up - GUILayout.EndHorizontal(); - - // Reset to default so the rest of things don't get messed up - EditorGUIUtility.labelWidth = 0; - return _instance; - } - } -#endif - } + + + + diff --git a/Assets/Scripts/Core/ValueGroupEditors.cs b/Assets/Scripts/Core/ValueGroupEditors.cs new file mode 100644 index 0000000..900b543 --- /dev/null +++ b/Assets/Scripts/Core/ValueGroupEditors.cs @@ -0,0 +1,454 @@ +using NodeCanvas.Editor; +using ParadoxNotion.Design; +using Reset.Core; +using UnityEditor; +using UnityEngine; + +#if UNITY_EDITOR + public class BoolValueGroupDrawer : ObjectDrawer { + public override BoolValueGroup OnGUI(GUIContent _content, BoolValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 50; + + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(80.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.BeginVertical(); + GUILayout.Label(_instance.label, labelOptions); + GUILayout.BeginHorizontal(); + + // Create the x settings enum + _instance.changeValue = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue.value); + + // Create the value/disabled information field + if (_instance.changeValue.value == ValueChangeAction.NewValue){ + _instance.value = EditorGUILayout.Toggle(_instance.value.value, floatOptions); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeValue.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } + + + + public class CurveValueGroupDrawer : ObjectDrawer { + public override CurveValueGroup OnGUI(GUIContent _content, CurveValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 50; + + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(80.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.BeginVertical(); + GUILayout.Label(_instance.label, labelOptions); + GUILayout.BeginHorizontal(); + + // Create the x settings enum + _instance.changeValue.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue.value); + + // Create the value/disabled information field + if (_instance.changeValue.value == ValueChangeAction.NewValue){ + BBParameterEditor.ParameterField("", _instance.value); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeValue.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } + + public class EnumValueGroupDrawer : ObjectDrawer{ + public override EnumValueGroup OnGUI(GUIContent _content, EnumValueGroup _instance){ + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(200.0f), + GUILayout.MinWidth(100.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.BeginVertical(); + GUILayout.Label(_instance.label, labelOptions); + GUILayout.BeginHorizontal(); + + // Create the x settings enum + _instance.changeValue.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue.value); + + // Create the value/disabled information field + if (_instance.changeValue.value == ValueChangeAction.NewValue){ + _instance.value.value = EditorGUILayout.EnumPopup("", instance.value.value, floatOptions); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField((ValueChangeAction)_instance.value.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + + + } + + public class FloatValueGroupDrawer : ObjectDrawer { + public override FloatValueGroup OnGUI(GUIContent _content, FloatValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 50; + + // Start the label + GUILayout.BeginHorizontal(); + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(80.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + GUIStyle titleText = new GUIStyle{ + fontSize = 12, + fontStyle = FontStyle.Bold, + padding = new RectOffset(8, 0, 3,0), + normal ={ + textColor = Color.white + } + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.Label(_instance.label, titleText); + + // End the label + GUILayout.EndHorizontal(); + + // Start the variables + GUILayout.BeginHorizontal(); + + // Create the x settings enum + // _instance.changeValue.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeValue.value); + BBParameterEditor.ParameterField("", _instance.changeValue); + + // Create the value/disabled information field + if (_instance.changeValue.value == ValueChangeAction.NewValue){ + // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); + BBParameterEditor.ParameterField("", _instance.value); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeValue.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up with the variables + GUILayout.EndHorizontal(); + + // Start the smoothing and easing section + GUILayout.BeginHorizontal(); + + GUIStyle smallText= new GUIStyle{ + fontSize = 10, + padding = new RectOffset(8, 0, 0,0), + normal ={ + textColor = Color.gray + } + }; + + // Start the left side for easing + GUILayout.BeginVertical(); + + // Draw the label + GUILayout.BeginHorizontal(); + GUILayout.Label("Easing", smallText); + GUILayout.EndHorizontal(); + + // Easing + _instance.changeEasing.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeEasing.value); + if (_instance.changeEasing.value == ValueChangeAction.NewValue){ + // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); + BBParameterEditor.ParameterField("", _instance.easing); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeEasing.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close easing + GUILayout.EndVertical(); + + // Start the right for smoothing + GUILayout.BeginVertical(); + + // Draw the label + GUILayout.BeginHorizontal(); + GUILayout.Label("Smoothing", smallText); + GUILayout.EndHorizontal(); + + // Easing + _instance.changeSmoothing.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeSmoothing.value); + if (_instance.changeSmoothing.value == ValueChangeAction.NewValue){ + // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); + BBParameterEditor.ParameterField("", _instance.smoothing); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeSmoothing.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close easing + GUILayout.EndVertical(); + + GUILayout.Space(8); + + GUILayout.EndHorizontal(); + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } + + public class Vector3ValueGroupDrawer : ObjectDrawer { + public override Vector3ValueGroup OnGUI(GUIContent _content, Vector3ValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 20; + + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(300.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.BeginVertical(); + GUILayout.Label(_instance.label, labelOptions); + GUILayout.BeginHorizontal(); + + // Create the x settings enum + _instance.changeX.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeX.value); + + // Create the value/disabled information field + if (_instance.changeX.value== ValueChangeAction.NewValue) { + var value = _instance.value.value; + value.x = EditorGUILayout.FloatField(_instance.value.value.x, floatOptions); + _instance.value.value = value; + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeX.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // It do what it do. + GUILayout.Space(5); + + // Create the y settings enum + _instance.changeY.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeY.value); + + // Create the value/disabled information field + if (_instance.changeY.value == ValueChangeAction.NewValue) { + var value = _instance.value.value; + value.y = EditorGUILayout.FloatField(_instance.value.value.y, floatOptions); + _instance.value.value = value; + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeY.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // It do what it do. + GUILayout.Space(5); + + // Create the y settings enum + _instance.changeZ.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeZ.value); + + // Create the value/disabled information field + if (_instance.changeZ.value == ValueChangeAction.NewValue) { + var value = _instance.value.value; + value.z = EditorGUILayout.FloatField(_instance.value.value.z, floatOptions); + _instance.value.value = value; + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeZ.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } + + public class Vector2ValueGroupDrawer : ObjectDrawer { + public override Vector2ValueGroup OnGUI(GUIContent _content, Vector2ValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 50; + + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(300.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(200.0f), + }; + + // Start the Vertical layout then add the label before adding a horizontal so the label will be on top of side-by-side options + GUILayout.BeginVertical(); + GUILayout.Label(_instance.label, labelOptions); + GUILayout.BeginHorizontal(); + + // Create the x settings enum + _instance.changeX.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", instance.changeX.value); + + // Create the value/disabled information field + if (_instance.changeX.value == ValueChangeAction.NewValue) { + var value = _instance.value.value; + value.x = EditorGUILayout.FloatField(_instance.value.value.x, floatOptions); + _instance.value.value = value; + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeX.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // It do what it do. + GUILayout.Space(5); + + // Create the y settings enum + _instance.changeY.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeY.value); + + // Create the value/disabled information field + if (_instance.changeY.value == ValueChangeAction.NewValue) { + var value = _instance.value.value; + value.y = EditorGUILayout.FloatField(_instance.value.value.y, floatOptions); + _instance.value.value = value; + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeY.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + GUILayout.EndVertical(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } + + // Custom editor for each orbital follow ring setting + public class OrbitalFollowValueGroupDrawer : ObjectDrawer{ + public override OrbitalFollowValueGroup OnGUI(GUIContent _content, OrbitalFollowValueGroup _instance){ + // Remove label for floats + EditorGUIUtility.labelWidth = 1; + + // Set layout options for the label and the float fields + GUILayoutOption[] floatOptions = new GUILayoutOption[] { + GUILayout.Width(300.0f), + GUILayout.MinWidth(20.0f), + GUILayout.ExpandWidth(true), + }; + + GUILayoutOption[] labelOptions = new GUILayoutOption[]{ + GUILayout.Width(60.0f), + }; + + // Start a Horiztonal Section + GUILayout.BeginHorizontal(); + + // Add the left side label + GUILayout.Label(_instance.label, labelOptions); + + // Create the height settings enum + _instance.changeHeight.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeHeight.value); + + // Create the value/disabled information field + if (_instance.changeHeight.value == ValueChangeAction.NewValue){ + _instance.height.value = EditorGUILayout.FloatField(_instance.height.value, floatOptions); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeHeight.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // It do what it do. + GUILayout.Space(5); + + // Create the radius settings enum + _instance.changeRadius.value = (ValueChangeAction)EditorGUILayout.EnumPopup("", _instance.changeRadius.value); + + // Create the value/disabled information field + if (_instance.changeRadius.value == ValueChangeAction.NewValue){ + _instance.radius = EditorGUILayout.FloatField(_instance.radius.value, floatOptions); + } else { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(_instance.changeRadius.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); + EditorGUI.EndDisabledGroup(); + } + + // Close this line up + GUILayout.EndHorizontal(); + + // Reset to default so the rest of things don't get messed up + EditorGUIUtility.labelWidth = 0; + return _instance; + } + } +#endif diff --git a/Assets/Scripts/Core/ValueGroupEditors.cs.meta b/Assets/Scripts/Core/ValueGroupEditors.cs.meta new file mode 100644 index 0000000..04e641e --- /dev/null +++ b/Assets/Scripts/Core/ValueGroupEditors.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e327ef0e278a437486396775f36450dd +timeCreated: 1758039991 \ No newline at end of file diff --git a/Assets/Scripts/Player/CameraSettingsProcessor.cs b/Assets/Scripts/Player/CameraSettingsProcessor.cs index c942e0f..f377de7 100644 --- a/Assets/Scripts/Player/CameraSettingsProcessor.cs +++ b/Assets/Scripts/Player/CameraSettingsProcessor.cs @@ -1,82 +1,68 @@ +using System; +using Reset.Core; +using Sirenix.OdinInspector; using Unity.Cinemachine; using UnityEngine; -public struct CameraSettingSingleValue{ - // NOTE: Could add a locked variable here if needed?? - public T originalValue; - public T targetValue; - public float smoothing; +public struct SettingValue{ + public T value; + public float smoothing; // Smoothing changes how fast value is changed. + public float easing; // Easing changes how fast smoothing is changed, when given a new value. + + public float currentSmoothing; // Actively eased and accessed value + public float currentValue; // Actively smoothed and accessed value + + public T refVel; // For use with SmoothDamp - public float velocityRef; - public Vector2 velocityRefV2; - public Vector3 velocityRefV3; - - public CameraSettingSingleValue(float defaultSmoothing = .2f, T original = default(T)){ - originalValue = original; - targetValue = original; + public SettingValue(float defaultEasing = 2f, float defaultSmoothing = 1f){ + easing = defaultEasing; + value = default; smoothing = defaultSmoothing; - - velocityRef = 0; - velocityRefV2 = default; - velocityRefV3 = default; - } - - public void Reset(){ - targetValue = originalValue; + currentSmoothing = 0; + currentValue = 0; + refVel = default; } } -public struct CameraSettingValues{ - public CameraSettingSingleValue mainFieldOfView; +public struct CameraSettingData : ICloneable{ + public SettingValue mainFieldOfView; - public CameraSettingSingleValue orbitPositionDamping; - public CameraSettingSingleValue orbitTargetOffset; + public SettingValue orbitPositionDamping; + public SettingValue orbitTargetOffset; - public CameraSettingSingleValue axisLookEnabledX; - public CameraSettingSingleValue axisLookEnabledY; + public SettingValue axisLookEnabledX; + public SettingValue axisLookEnabledY; - public CameraSettingSingleValue axisLookGainX; - public CameraSettingSingleValue axisLookGainY; + public SettingValue axisLookGainX; + public SettingValue axisLookGainY; - public CameraSettingSingleValue orbitFollowTopHeight; - public CameraSettingSingleValue orbitFollowTopRadius; - public CameraSettingSingleValue orbitFollowCenterHeight; - public CameraSettingSingleValue orbitFollowCenterRadius; - public CameraSettingSingleValue orbitFollowBottomHeight; - public CameraSettingSingleValue orbitFollowBottomRadius; + public SettingValue orbitFollowTopHeight; + public SettingValue orbitFollowTopRadius; + public SettingValue orbitFollowCenterHeight; + public SettingValue orbitFollowCenterRadius; + public SettingValue orbitFollowBottomHeight; + public SettingValue orbitFollowBottomRadius; - public CameraSettingSingleValue rotationComposerScreenPos; + public SettingValue rotationComposerScreenPos; - public CameraSettingSingleValue cameraOffsetOffset; - - public CameraSettingValues(float defaultSmoothing){ - mainFieldOfView = new CameraSettingSingleValue(defaultSmoothing); - - orbitPositionDamping = new CameraSettingSingleValue(defaultSmoothing); - orbitTargetOffset = new CameraSettingSingleValue(defaultSmoothing); - - axisLookEnabledX = new CameraSettingSingleValue(); - axisLookEnabledY = new CameraSettingSingleValue(); - - axisLookGainX = new CameraSettingSingleValue(defaultSmoothing); - axisLookGainY = new CameraSettingSingleValue(defaultSmoothing); - - orbitFollowTopHeight = new CameraSettingSingleValue(defaultSmoothing); - orbitFollowTopRadius = new CameraSettingSingleValue(defaultSmoothing); - orbitFollowCenterHeight = new CameraSettingSingleValue(defaultSmoothing); - orbitFollowCenterRadius = new CameraSettingSingleValue(defaultSmoothing); - orbitFollowBottomHeight = new CameraSettingSingleValue(defaultSmoothing); - orbitFollowBottomRadius = new CameraSettingSingleValue(defaultSmoothing); - - rotationComposerScreenPos = new CameraSettingSingleValue(defaultSmoothing); - cameraOffsetOffset = new CameraSettingSingleValue(defaultSmoothing); + public SettingValue cameraOffsetOffset; + + public object Clone(){ + return MemberwiseClone(); } } public class CameraSettingsProcessor : MonoBehaviour{ public static CameraSettingsProcessor Instance{ get; private set; } - public static CameraSettingValues values = new(defaultSmoothing: .2f); + [HideInInspector] public static CameraSettingData data; + [HideInInspector] public static CameraSettingData original; + [ShowInInspector] public static CameraSettingData smoothing; + [ShowInInspector] public static CameraSettingData easing; + + + [HideInInspector] public static CameraSettingData currentSmoothing; + [HideInInspector] public static CameraSettingData currentValue; public static GameObject mainCamera; @@ -102,87 +88,112 @@ public class CameraSettingsProcessor : MonoBehaviour{ offset = mainCamera.GetComponent(); axisCont = mainCamera.GetComponent(); - // Initialize camera settings values - values = new CameraSettingValues{ - cameraOffsetOffset = new CameraSettingSingleValue(defaultSmoothing: .2f, offset.Offset), - mainFieldOfView = new CameraSettingSingleValue(defaultSmoothing: .2f, main.Lens.FieldOfView), - axisLookEnabledX = new CameraSettingSingleValue(0, axisCont.Controllers[0].Enabled), - axisLookEnabledY = new CameraSettingSingleValue(0, axisCont.Controllers[1].Enabled), - axisLookGainX = new CameraSettingSingleValue(defaultSmoothing: .2f, axisCont.Controllers[0].Input.Gain), - axisLookGainY = new CameraSettingSingleValue(defaultSmoothing: .2f, axisCont.Controllers[1].Input.Gain), - orbitPositionDamping = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.TrackerSettings.PositionDamping), - orbitTargetOffset = new CameraSettingSingleValue(defaultSmoothing: .1f, orbit.TargetOffset), - orbitFollowTopHeight = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Top.Height), - orbitFollowTopRadius = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Top.Radius), - orbitFollowCenterHeight = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Center.Height), - orbitFollowCenterRadius = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Center.Radius), - orbitFollowBottomHeight = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Bottom.Height), - orbitFollowBottomRadius = new CameraSettingSingleValue(defaultSmoothing: .2f, orbit.Orbits.Bottom.Radius), - rotationComposerScreenPos = new CameraSettingSingleValue(defaultSmoothing: .2f, rotComp.Composition.ScreenPosition), - }; - } - - void ProcessCameraValues(){ - main.Lens.FieldOfView = Mathf.SmoothDamp(main.Lens.FieldOfView, - values.mainFieldOfView.targetValue, ref values.mainFieldOfView.velocityRef, - values.mainFieldOfView.smoothing); + // Initialize camera settings values from current values + data.mainFieldOfView.value = main.Lens.FieldOfView; + + data.orbitPositionDamping.value = orbit.TrackerSettings.PositionDamping; + data.orbitTargetOffset.value = orbit.TargetOffset; - axisCont.Controllers[0].Enabled = values.axisLookEnabledX.targetValue; + data.axisLookEnabledX.value = axisCont.Controllers[0].Enabled; + data.axisLookEnabledY.value = axisCont.Controllers[1].Enabled; - axisCont.Controllers[1].Enabled = values.axisLookEnabledY.targetValue; + data.axisLookGainX.value = axisCont.Controllers[0].Input.Gain; + data.axisLookGainY.value = axisCont.Controllers[1].Input.Gain; - axisCont.Controllers[0].Input.Gain = Mathf.SmoothDamp(axisCont.Controllers[0].Input.Gain, - values.axisLookGainX.targetValue, ref values.axisLookGainX.velocityRef, - values.axisLookGainX.smoothing); - - axisCont.Controllers[1].Input.Gain = Mathf.SmoothDamp(axisCont.Controllers[1].Input.Gain, - values.axisLookGainY.targetValue, ref values.axisLookGainY.velocityRef, - values.axisLookGainY.smoothing); - - orbit.TargetOffset = Vector3.SmoothDamp(orbit.TargetOffset, - values.orbitTargetOffset.targetValue, ref values.orbitTargetOffset.velocityRefV3, - values.orbitTargetOffset.smoothing); - - orbit.TrackerSettings.PositionDamping = Vector3.SmoothDamp(orbit.TrackerSettings.PositionDamping, - values.orbitPositionDamping.targetValue, ref values.orbitPositionDamping.velocityRefV3, - values.orbitPositionDamping.smoothing); - - orbit.Orbits.Top.Height = Mathf.SmoothDamp(orbit.Orbits.Top.Height, - values.orbitFollowTopHeight.targetValue, ref values.orbitFollowTopHeight.velocityRef, - values.orbitFollowTopHeight.smoothing); - - orbit.Orbits.Top.Radius = Mathf.SmoothDamp(orbit.Orbits.Top.Radius, - values.orbitFollowTopRadius.targetValue, ref values.orbitFollowTopRadius.velocityRef, - values.orbitFollowTopRadius.smoothing); - - orbit.Orbits.Center.Height = Mathf.SmoothDamp(orbit.Orbits.Center.Height, - values.orbitFollowCenterHeight.targetValue, ref values.orbitFollowCenterHeight.velocityRef, - values.orbitFollowCenterHeight.smoothing); - - orbit.Orbits.Center.Radius = Mathf.SmoothDamp(orbit.Orbits.Center.Radius, - values.orbitFollowCenterRadius.targetValue, ref values.orbitFollowCenterRadius.velocityRef, - values.orbitFollowCenterRadius.smoothing); - - orbit.Orbits.Bottom.Height = Mathf.SmoothDamp(orbit.Orbits.Bottom.Height, - values.orbitFollowBottomHeight.targetValue, ref values.orbitFollowBottomHeight.velocityRef, - values.orbitFollowBottomHeight.smoothing); - - orbit.Orbits.Bottom.Radius = Mathf.SmoothDamp(orbit.Orbits.Bottom.Radius, - values.orbitFollowBottomRadius.targetValue, ref values.orbitFollowBottomRadius.velocityRef, - values.orbitFollowBottomRadius.smoothing); + data.orbitFollowTopHeight.value = orbit.Orbits.Top.Height; + data.orbitFollowTopRadius.value = orbit.Orbits.Top.Radius; + data.orbitFollowCenterHeight.value = orbit.Orbits.Center.Height; + data.orbitFollowCenterRadius.value = orbit.Orbits.Center.Radius; + data.orbitFollowBottomHeight.value = orbit.Orbits.Bottom.Height; + data.orbitFollowBottomRadius.value = orbit.Orbits.Bottom.Radius; - rotComp.Composition.ScreenPosition = Vector2.SmoothDamp(rotComp.Composition.ScreenPosition, - values.rotationComposerScreenPos.targetValue, ref values.rotationComposerScreenPos.velocityRefV2, - values.rotationComposerScreenPos.smoothing); - - offset.Offset = Vector3.SmoothDamp(offset.Offset, - values.cameraOffsetOffset.targetValue, ref values.cameraOffsetOffset.velocityRefV3, - values.cameraOffsetOffset.smoothing); - - + data.rotationComposerScreenPos.value = rotComp.Composition.ScreenPosition; + data.cameraOffsetOffset.value = offset.Offset; + + // And copy to the original + original = (CameraSettingData)data.Clone(); } void Update(){ + EaseToNewSmoothingValues(); ProcessCameraValues(); } + + void EaseToNewSmoothingValues(){ + data.mainFieldOfView.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, data.mainFieldOfView.easing * Time.deltaTime); + + data.orbitPositionDamping.currentSmoothing = Mathf.MoveTowards(data.orbitPositionDamping.currentSmoothing, data.orbitPositionDamping.smoothing, easing.orbitPositionDamping.easing * Time.deltaTime); + data.orbitTargetOffset.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + + data.axisLookGainX.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.axisLookGainY.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + + data.orbitFollowTopHeight.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.orbitFollowTopRadius.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.orbitFollowCenterHeight.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.orbitFollowCenterRadius.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.orbitFollowBottomHeight.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.orbitFollowBottomRadius.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + + data.rotationComposerScreenPos.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + data.cameraOffsetOffset.currentSmoothing = Mathf.MoveTowards(data.mainFieldOfView.currentSmoothing, data.mainFieldOfView.smoothing, easing.mainFieldOfView.easing * Time.deltaTime); + } + + void ProcessCameraValues(){ + main.Lens.FieldOfView = Mathf.SmoothDamp(main.Lens.FieldOfView, + data.mainFieldOfView.value, ref data.mainFieldOfView.refVel, + data.mainFieldOfView.smoothing); + + axisCont.Controllers[0].Enabled = data.axisLookEnabledX.value; + + axisCont.Controllers[1].Enabled = data.axisLookEnabledY.value; + + axisCont.Controllers[0].Input.Gain = Mathf.SmoothDamp(axisCont.Controllers[0].Input.Gain, + data.axisLookGainX.value, ref data.axisLookGainX.refVel, + data.axisLookGainX.smoothing); + + axisCont.Controllers[1].Input.Gain = Mathf.SmoothDamp(axisCont.Controllers[1].Input.Gain, + data.axisLookGainY.value, ref data.axisLookGainY.refVel, + data.axisLookGainY.smoothing); + + orbit.TargetOffset = Vector3.SmoothDamp(orbit.TargetOffset, + data.orbitTargetOffset.value, ref data.orbitTargetOffset.refVel, + data.orbitTargetOffset.smoothing); + + orbit.TrackerSettings.PositionDamping = Vector3.SmoothDamp(orbit.TrackerSettings.PositionDamping, + data.orbitPositionDamping.value, ref data.orbitPositionDamping.refVel, + data.orbitPositionDamping.smoothing); + + orbit.Orbits.Top.Height = Mathf.SmoothDamp(orbit.Orbits.Top.Height, + data.orbitFollowTopHeight.value, ref data.orbitFollowTopHeight.refVel, + data.orbitFollowTopHeight.smoothing); + + orbit.Orbits.Top.Radius = Mathf.SmoothDamp(orbit.Orbits.Top.Radius, + data.orbitFollowTopRadius.value, ref data.orbitFollowTopRadius.refVel, + data.orbitFollowTopRadius.smoothing); + + orbit.Orbits.Center.Height = Mathf.SmoothDamp(orbit.Orbits.Center.Height, + data.orbitFollowCenterHeight.value, ref data.orbitFollowCenterHeight.refVel, + data.orbitFollowCenterHeight.smoothing); + + orbit.Orbits.Center.Radius = Mathf.SmoothDamp(orbit.Orbits.Center.Radius, + data.orbitFollowCenterRadius.value, ref data.orbitFollowCenterRadius.refVel, + data.orbitFollowCenterRadius.smoothing); + + orbit.Orbits.Bottom.Height = Mathf.SmoothDamp(orbit.Orbits.Bottom.Height, + data.orbitFollowBottomHeight.value, ref data.orbitFollowBottomHeight.refVel, + data.orbitFollowBottomHeight.smoothing); + + orbit.Orbits.Bottom.Radius = Mathf.SmoothDamp(orbit.Orbits.Bottom.Radius, + data.orbitFollowBottomRadius.value, ref data.orbitFollowBottomRadius.refVel, + data.orbitFollowBottomRadius.smoothing); + + rotComp.Composition.ScreenPosition = Vector2.SmoothDamp(rotComp.Composition.ScreenPosition, + data.rotationComposerScreenPos.value, ref data.rotationComposerScreenPos.refVel, + data.rotationComposerScreenPos.smoothing); + + offset.Offset = Vector3.SmoothDamp(offset.Offset, + data.cameraOffsetOffset.value, ref data.cameraOffsetOffset.refVel, + data.cameraOffsetOffset.smoothing); + } } diff --git a/Assets/Scripts/Player/UnitMovementHandler.cs b/Assets/Scripts/Player/UnitMovementHandler.cs index 8ffb93e..a57e1e4 100644 --- a/Assets/Scripts/Player/UnitMovementHandler.cs +++ b/Assets/Scripts/Player/UnitMovementHandler.cs @@ -1,10 +1,8 @@ using System; -using NUnit.Framework.Internal; using UnityEngine; using ParadoxNotion.Design; +using PlasticPipe.PlasticProtocol.Messages; using Sirenix.OdinInspector; -using UnityEngine.Serialization; -using Quaternion = UnityEngine.Quaternion; public enum PlayerFacingDirection{ TowardsTarget = 0, @@ -26,8 +24,7 @@ namespace Reset.Units{ // Movement Direction public float accelerationSmoothing = 5f; public float deaccelerationSmoothing = 5f; - // public AnimationCurve deaccelerationCurve; // Currently unused, may return - + [SliderField(0,1)] public float airDirectionDecay; @@ -47,9 +44,8 @@ namespace Reset.Units{ public float settingsChangeSmoothing = 6f; // Rotation - [ShowInInspector, SerializeReference] - public Enum rotateFacing; - [FormerlySerializedAs("rotationSpeedTarget")] public float rotationSpeed = 5f; + [ShowInInspector, SerializeReference] public Enum rotateFacing; + public float rotationSpeed = 5f; public float rotationSmoothing = 1f; public float rotationInputBlending = .3f; @@ -57,8 +53,38 @@ namespace Reset.Units{ return MemberwiseClone(); } } + + public class ResolvedMovement{ + public UnitMovementHandler.MoveDirection moveDirection; + public float moveSpeed; + public Quaternion rotation; + public float rotationSpeed; + public float gravity; + } public class UnitMovementHandler : MonoBehaviour{ + public struct MoveDirection{ + private Transform owner; + + private Vector2 moveDir; // Always local + + public Vector2 World{ + get => owner.TransformDirection(Local); + set{ + moveDir = owner.InverseTransformDirection(value); + Local = moveDir; + } + } + + public Vector2 Local{ + get => owner.InverseTransformDirection(World); + set { + moveDir = value; + World = owner.TransformDirection(value); + } + } + } + // class MovementFloatModifier{ // // IBuffSource source // public float value; @@ -79,25 +105,24 @@ namespace Reset.Units{ [FoldoutGroup("Smoothed Values"), ShowInInspector, ReadOnly] private float smoothedGravityScale; [FoldoutGroup("Smoothed Values"), ShowInInspector, ReadOnly] private float settingsChangeRotationSpeed; - private float directionChangeDot; - private bool moveCallDisabledNextFrame; - - private bool movedThisFrame; + // Lerps + private float directionChangeDotLerp; + private Vector3 moveSmoothVelocityRef; + private float gravitySmoothVelocityRef; + // References private CharacterController controller; private PlayerControls controls; private LockOnManager lockOnManager; - private Vector3 moveSmooth; - public float gravitySmooth; - - private bool relativeToCamera; + // Movement Data + [ShowInInspector, PropertyOrder(2)] public UnitMovementData data = new(); + [ShowInInspector, PropertyOrder(2)] public UnitMovementData smoothing = new(); + [ShowInInspector, PropertyOrder(2)] public UnitMovementData easing = new(); - [ShowInInspector, PropertyOrder(2)] - public UnitMovementData data = new(); - - [HideInInspector] - public UnitMovementData defaultData; + [HideInInspector] public UnitMovementData defaultData; + [HideInInspector] public UnitMovementData defaultSmoothing; + [HideInInspector] public UnitMovementData defaultEasing; void Awake(){ controller = GetComponent(); @@ -105,15 +130,16 @@ namespace Reset.Units{ lockOnManager = GetComponent(); } - private void Start(){ + void Start(){ defaultData = (UnitMovementData)data.Clone(); + defaultSmoothing = (UnitMovementData)smoothing.Clone(); + defaultEasing = (UnitMovementData)easing.Clone(); } void Update(){ UpdateCurrentDirection(); UpdateCurrentGravity(); UpdateCurrentSpeed(); - UpdateCurrentRotation(); DoMovement(); @@ -188,7 +214,7 @@ namespace Reset.Units{ float switchedDirection = Vector3.Dot(inputMovement, outputMoveDirection); float switchedDirectionRemapped = Mathf.Lerp(0, 1, switchedDirection); - directionChangeDot = Mathf.Lerp(switchedDirection, switchedDirectionRemapped, 5f * Time.deltaTime) ; // turn that .5f into a variable + directionChangeDotLerp = Mathf.Lerp(switchedDirection, switchedDirectionRemapped, 5f * Time.deltaTime) ; // turn that .5f into a variable // Smooth movement. Use deaccel smoothing if the input magnitude is lower, and accel smoothing if it's higher // Also checks when grounded to only use Slerp on the ground @@ -197,7 +223,7 @@ namespace Reset.Units{ slerpedValue = Vector3.Slerp(currentNoY, targetNoY, data.accelerationSmoothing * Time.deltaTime); lerpedValue = Vector3.Lerp(currentNoY, targetNoY, data.accelerationSmoothing * Time.deltaTime); - currentNoY = Vector3.Lerp(lerpedValue, slerpedValue, directionChangeDot); + currentNoY = Vector3.Lerp(lerpedValue, slerpedValue, directionChangeDotLerp); } else { currentNoY = Vector3.Lerp(currentNoY, targetNoY, data.accelerationSmoothing * Time.deltaTime); } @@ -206,14 +232,14 @@ namespace Reset.Units{ slerpedValue = Vector3.Slerp(currentNoY, targetNoY, data.deaccelerationSmoothing * Time.deltaTime); lerpedValue = Vector3.Lerp(currentNoY, targetNoY, data.deaccelerationSmoothing * Time.deltaTime); - currentNoY = Vector3.Lerp(lerpedValue, slerpedValue, directionChangeDot); + currentNoY = Vector3.Lerp(lerpedValue, slerpedValue, directionChangeDotLerp); } else { currentNoY = Vector3.Lerp(currentNoY, targetNoY, data.deaccelerationSmoothing * data.airDirectionDecay * Time.deltaTime); } } // Commit move direction - outputMoveDirection = Vector3.SmoothDamp(outputMoveDirection, new Vector3(currentNoY.x, outputMoveDirection.y, currentNoY.z),ref moveSmooth , .5f *Time.deltaTime); + outputMoveDirection = Vector3.SmoothDamp(outputMoveDirection, new Vector3(currentNoY.x, outputMoveDirection.y, currentNoY.z),ref moveSmoothVelocityRef , .5f *Time.deltaTime); } // Update the speed, called every frame @@ -237,7 +263,7 @@ namespace Reset.Units{ float gravityMoveDirection = data.jumpPower + (Physics.gravity.y * data.gravityPower); // Commit gravity to move direction, ignoring XZ since those are done in UpdateMovementDirection - outputMoveDirection.y = Mathf.SmoothDamp(outputMoveDirection.y, gravityMoveDirection, ref gravitySmooth, .1f * Time.deltaTime); + outputMoveDirection.y = Mathf.SmoothDamp(outputMoveDirection.y, gravityMoveDirection, ref gravitySmoothVelocityRef, .1f * Time.deltaTime); } // Update the rotation, called every frame @@ -294,10 +320,6 @@ namespace Reset.Units{ public void DoMovement(){ DoMovement(outputMoveDirection, outputSpeed, data.gravityScale); } - - public void DisableNextMoveCall(){ - moveCallDisabledNextFrame = true; - } // Custom move from input public void DoMovement(Vector3 moveDir, float speed, float gravityScale){