diff --git a/Assets/Core/Objects/CameraGroup.prefab b/Assets/Core/Objects/CameraGroup.prefab index 7b20df3..5bb69e9 100644 --- a/Assets/Core/Objects/CameraGroup.prefab +++ b/Assets/Core/Objects/CameraGroup.prefab @@ -344,6 +344,142 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c032a18b0b0c1da4092bfc365c6e4aad, type: 3} m_Name: m_EditorClassIdentifier: + data: + mainFieldOfView: + targetValue: 0 + currentValue: 0 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitPositionDamping: + targetValue: {x: 0, y: 0, z: 0} + currentValue: {x: 0, y: 0, z: 0} + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: {x: 0, y: 0, z: 0} + defaultSmoothing: 1 + defaultEasing: 2 + orbitTargetOffset: + targetValue: {x: 0, y: 0, z: 0} + currentValue: {x: 0, y: 0, z: 0} + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: {x: 0, y: 0, z: 0} + defaultSmoothing: 1 + defaultEasing: 2 + axisLookEnabledX: + targetValue: 1 + currentValue: 1 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 1 + defaultSmoothing: 1 + defaultEasing: 2 + axisLookEnabledY: + targetValue: 1 + currentValue: 1 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 1 + defaultSmoothing: 1 + defaultEasing: 2 + axisLookGainX: + targetValue: 0 + currentValue: 0 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + axisLookGainY: + targetValue: 0 + currentValue: 0 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowTopHeight: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowTopRadius: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowCenterHeight: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowCenterRadius: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowBottomHeight: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + orbitFollowBottomRadius: + targetValue: 0 + currentValue: 0 + targetSmoothing: 20 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 0 + defaultSmoothing: 1 + defaultEasing: 2 + rotationComposerScreenPos: + targetValue: {x: 0, y: 0} + currentValue: {x: 0, y: 0} + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: {x: 0, y: 0} + defaultSmoothing: 1 + defaultEasing: 2 + cameraOffsetOffset: + targetValue: {x: 0, y: 0, z: 0} + currentValue: {x: 0, y: 0, z: 0} + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: {x: 0, y: 0, z: 0} + defaultSmoothing: 1 + defaultEasing: 2 --- !u!114 &4383369033389970653 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Player/Graphs/PlayerBaseFSM.asset b/Assets/Player/Graphs/PlayerBaseFSM.asset index ca0b67b..3a81748 100644 --- a/Assets/Player/Graphs/PlayerBaseFSM.asset +++ b/Assets/Player/Graphs/PlayerBaseFSM.asset @@ -31,7 +31,7 @@ MonoBehaviour: Smoothing","changeValue":{"_value":2},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationInputBlending":{"label":"Rotation Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"feedNewRotation":{},"feedRelativeTo":{},"_isDisabled":true,"$type":"Reset.Core.ChangeMovementSettings"},{"fieldOfView":{"label":"FOV","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitTargetOffset":{"label":"Target Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitPositionDamping":{"label":"Position - Damping","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowTop":{"label":"Top","changeHeight":{},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowCenter":{"label":"Center","changeHeight":{},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowBottom":{"label":"Bottom","changeHeight":{},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"enableXAxis":{"label":"Input + Damping","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowTop":{"label":"Top","changeHeight":{"_value":2},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{"_value":2},"_smoothing":{},"_changeEasing":{"_value":2},"_easing":{}},"orbitFollowCenter":{"label":"Center","changeHeight":{"_value":2},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{"_value":2},"_smoothing":{},"_changeEasing":{"_value":2},"_easing":{}},"orbitFollowBottom":{"label":"Bottom","changeHeight":{"_value":2},"height":{},"changeRadius":{"_value":2},"radius":{},"_changeSmoothing":{"_value":2},"_smoothing":{},"_changeEasing":{"_value":2},"_easing":{}},"enableXAxis":{"label":"Input Axis X Enabled","value":{"_value":true},"changeValue":{}},"enableYAxis":{"label":"Input Axis Y Enabled","value":{"_value":true},"changeValue":{}},"axisLookXGain":{"label":"Look Orbit X Gain","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"axisLookYGain":{"label":"Look @@ -53,7 +53,7 @@ MonoBehaviour: Direction","value":{},"changeValue":{"_value":2}},"rotationSpeed":{"label":"Rotation Speed","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationSmoothing":{"label":"Rotation Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationInputBlending":{"label":"Rotation - Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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 + Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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":453.5251,"y":387.7884},"$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","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"airDirectionDecay":{"label":"Air Direction Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"accelerationSmoothing":{"label":"Acceleration @@ -72,7 +72,7 @@ MonoBehaviour: Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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":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 + (Standby)","_position":{"x":569.8795,"y":-110.827},"$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","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"airDirectionDecay":{"label":"Air @@ -266,19 +266,17 @@ MonoBehaviour: Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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":[{"fieldOfView":{"label":"FOV","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitTargetOffset":{"label":"Target Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitPositionDamping":{"label":"Position - Damping","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowTop":{"label":"Top","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":7.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowCenter":{"label":"Center","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":8.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowBottom":{"label":"Bottom","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":5.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"enableXAxis":{"label":"Input + Damping","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowTop":{"label":"Top","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":7.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":100.0},"_changeEasing":{"_value":1},"_easing":{"_value":100.0}},"orbitFollowCenter":{"label":"Center","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":8.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":100.0},"_changeEasing":{"_value":1},"_easing":{"_value":100.0}},"orbitFollowBottom":{"label":"Bottom","changeHeight":{},"height":{},"changeRadius":{"_value":1},"radius":{"_value":5.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":100.0},"_changeEasing":{"_value":1},"_easing":{"_value":100.0}},"enableXAxis":{"label":"Input Axis X Enabled","value":{"_value":true},"changeValue":{}},"enableYAxis":{"label":"Input Axis Y Enabled","value":{"_value":true},"changeValue":{}},"axisLookXGain":{"label":"Look Orbit X Gain","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"axisLookYGain":{"label":"Look Orbit Y Gain","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"screenPosition":{"label":"Screen - Position","value":{},"changeX":{},"changeY":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"cameraOffset":{"label":"Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"},{"log":{"_value":"Jumped"},"secondsToRun":0.0,"$type":"NodeCanvas.Tasks.Actions.DebugLogText"},{"jumpPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"jumpPowerDecay":{"label":"Jump - Power Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityPower":{"label":"Gravity - Power","changeValue":{"_value":3},"value":{"_value":15.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Gravity + Position","value":{},"changeX":{},"changeY":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"cameraOffset":{"label":"Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"},{"log":{"_value":"Jumped"},"secondsToRun":0.0,"_isDisabled":true,"$type":"NodeCanvas.Tasks.Actions.DebugLogText"},{"airDirectionDecay":{"label":"Air + Direction Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Gravity Max","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityAcceleration":{"label":"Gravity - Acceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Gravity - Scale","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"_isDisabled":true,"$type":"Reset.Units.ChangeGravitySettings"}]},"_onUpdateList":{"executionMode":1,"actions":[{"newGravity":{"_value":15.0},"absolute":{"_value":true},"relativity":{"_value":0.79},"$type":"Reset.Units.SetNewGravity"}]},"_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":225.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 + Acceleration","changeValue":{"_value":1},"value":{"_value":10.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Gravity + Scale","changeValue":{"_value":1},"value":{"_value":3.0},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeGravitySettings"},{"newGravity":{"_value":10.0},"absolute":{"_value":true},"relativity":{"_value":0.79},"$type":"Reset.Units.SetNewGravity"}]},"_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":712.7955,"y":210.5778},"$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","changeValue":{"_value":2},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"airDirectionDecay":{"label":"Air @@ -296,10 +294,20 @@ MonoBehaviour: Speed","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationSmoothing":{"label":"Rotation Smoothing","changeValue":{"_value":2},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationInputBlending":{"label":"Rotation Input Blending","changeValue":{"_value":2},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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":31.4603},"$type":"NodeCanvas.StateMachines.ActionState","$id":"22"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","changeValue":{"_value":1},"value":{"_value":30.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":0.1},"_changeEasing":{"_value":1},"_easing":{"_value":0.1}},"acceleration":{"label":"Acceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"deacceleration":{"label":"Deacceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeMoveSpeedSettings"}]},"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Sprint - Burst","_position":{"x":631.7453,"y":530.2648},"$type":"NodeCanvas.StateMachines.ActionState","$id":"23"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move - Speed","changeValue":{"_value":1},"value":{"_value":20.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":2.0},"_changeEasing":{"_value":1},"_easing":{"_value":2.0}},"acceleration":{"label":"Acceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"deacceleration":{"label":"Deacceleration","changeValue":{"_value":1},"value":{"_value":10.0},"_changeSmoothing":{"_value":1},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeMoveSpeedSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_position":{"x":827.5781,"y":724.4287},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"24"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Standard Movement","_position":{"x":227.1761,"y":28.24034},"$type":"NodeCanvas.StateMachines.ActionState","$id":"22"},{"_actionList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","changeValue":{"_value":1},"value":{"_value":30.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":0.1},"_changeEasing":{"_value":1},"_easing":{"_value":0.1}},"acceleration":{"label":"Acceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"deacceleration":{"label":"Deacceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeMoveSpeedSettings"},{"fieldOfView":{"label":"FOV","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitTargetOffset":{"label":"Target + Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitPositionDamping":{"label":"Position + Damping","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"orbitFollowTop":{"label":"Top + Ring","changeHeight":{},"height":{},"changeRadius":{"_value":3},"radius":{"_value":1.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":69.0},"_changeEasing":{"_value":1},"_easing":{"_value":10.0}},"orbitFollowCenter":{"label":"Top + Ring","changeHeight":{},"height":{},"changeRadius":{"_value":3},"radius":{"_value":1.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":1.0},"_changeEasing":{"_value":1},"_easing":{"_value":1.0}},"orbitFollowBottom":{"label":"Top + Ring","changeHeight":{},"height":{},"changeRadius":{"_value":3},"radius":{"_value":1.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":1.0},"_changeEasing":{"_value":1},"_easing":{"_value":1.0}},"enableXAxis":{"label":"Input + Axis X Enabled","value":{"_value":true},"changeValue":{}},"enableYAxis":{"label":"Input + Axis Y Enabled","value":{"_value":true},"changeValue":{}},"axisLookXGain":{"label":"Look + Orbit X Gain","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"axisLookYGain":{"label":"Look + Orbit Y Gain","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"screenPosition":{"label":"Screen + Position","value":{},"changeX":{},"changeY":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"cameraOffset":{"label":"Offset","value":{},"changeX":{},"changeY":{},"changeZ":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"NodeCanvas.Tasks.Actions.ChangeCameraSettings"}]},"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_name":"Sprint + Burst","_position":{"x":617.7376,"y":561.286},"$type":"NodeCanvas.StateMachines.ActionState","$id":"23"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move + Speed","changeValue":{"_value":1},"value":{"_value":60.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":2.0},"_changeEasing":{"_value":1},"_easing":{"_value":2.0}},"acceleration":{"label":"Acceleration","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"deacceleration":{"label":"Deacceleration","changeValue":{"_value":1},"value":{"_value":10.0},"_changeSmoothing":{"_value":1},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeMoveSpeedSettings"}]},"_onUpdateList":{"executionMode":1,"actions":[]},"_onExitList":{"executionMode":1,"actions":[]},"foldEnter":true,"_color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"_position":{"x":826.5781,"y":724.4287},"$type":"NodeCanvas.StateMachines.SuperActionState","$id":"24"},{"_onEnterList":{"executionMode":1,"actions":[{"moveSpeed":{"label":"Move Speed","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"moveSpeedSoothing":{"label":"Move Speed Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"airDirectionDecay":{"label":"Air Direction Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"accelerationSmoothing":{"label":"Acceleration @@ -317,31 +325,7 @@ MonoBehaviour: Smoothing","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"rotationInputBlending":{"label":"Rotation Input Blending","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_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":"Reset.Units.PlayerFacingDirection","_value":{"$content":0,"$type":"Reset.Units.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":195.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"},{"_actionList":{"executionMode":1,"actions":[{"jumpPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"jumpPowerDecay":{"label":"Jump - Power Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityAcceleration":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeGravitySettings"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_position":{"x":970.1197,"y":903.1187},"$type":"NodeCanvas.StateMachines.ActionState"},{"_actionList":{"executionMode":1,"actions":[{"jumpPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{"_value":1},"_easing":{}},"jumpPowerDecay":{"label":"Jump - Power Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityAcceleration":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeGravitySettings"}]},"_repeatStateActions":true,"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_position":{"x":409.0492,"y":931.1804},"$type":"NodeCanvas.StateMachines.ActionState"},{"_actionList":{"executionMode":1,"actions":[{"jumpPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"jumpPowerDecay":{"label":"Jump - Power Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityAcceleration":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeGravitySettings"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_position":{"x":582.1819,"y":1069.891},"$type":"NodeCanvas.StateMachines.ActionState"},{"_actionList":{"executionMode":1,"actions":[{"jumpPower":{"label":"Jump - Power","changeValue":{"_value":1},"value":{"_value":69.0},"_changeSmoothing":{"_value":1},"_smoothing":{"_value":25.0},"_changeEasing":{"_value":1},"_easing":{"_value":62.0}},"jumpPowerDecay":{"label":"Jump - Power Decay","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityPower":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityMax":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityAcceleration":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"gravityScale":{"label":"Jump - Power","changeValue":{},"value":{},"_changeSmoothing":{},"_smoothing":{},"_changeEasing":{},"_easing":{}},"$type":"Reset.Units.ChangeGravitySettings"}]},"_color":{"r":1.0,"g":0.42,"b":0.32,"a":1.0},"_position":{"x":718.0027,"y":1208.001},"$type":"NodeCanvas.StateMachines.ActionState"}],"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 + 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, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple Pull"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3, @@ -355,7 +339,7 @@ MonoBehaviour: Launch"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"6"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"eventName":{"_value":"Grapple Pull"},"saveEventValue":{"_name":"_grappleLaunchDir"},"$type":"NodeCanvas.Tasks.Conditions.CheckEvent`1[[UnityEngine.Vector3, - UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"6"},"_targetNode":{"$ref":"11"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"7"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"conditions":[{"timeout":{"_value":0.2},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"9"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"10"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"11"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"12"},"_targetNode":{"$ref":"13"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"12"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"13"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"14"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkMode":1,"conditions":[{"timeout":{"_value":2.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{"_value":true},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"16"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"16"},"_targetNode":{"$ref":"17"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"18"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkAgainst":2,"checkAgainstValue":{"_name":"_wallJumpHitNormal"},"desiredValue":{"_value":1.0},"tolerance":{"_value":0.5},"considerCameraRotation":{"_value":true},"negate":{},"$type":"NodeCanvas.Tasks.Conditions.GetMovementInputDotProduct"},"_sourceNode":{"$ref":"19"},"_targetNode":{"$ref":"20"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"19"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkMode":1,"conditions":[{"actionName":{"_value":"Jump"},"actionPhase":{"_value":4},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},{"valueA":{"_name":"_currentYMoveDirection"},"checkType":2,"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckFloat"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"21"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"22"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":0.1},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"23"},"_targetNode":{"$ref":"24"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"25"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Sprint"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"0"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"25"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{"isGrounded":{"_propertyPath":"UnityEngine.CharacterController.isGrounded","_name":"isGrounded","_id":"619300a4-be8b-4ad4-ba2a-978468094ba2","$type":"NodeCanvas.Framework.Variable`1[[System.Boolean, + UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"_sourceNode":{"$ref":"6"},"_targetNode":{"$ref":"11"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"7"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"conditions":[{"timeout":{"_value":0.2},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"9"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"10"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"11"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"12"},"_targetNode":{"$ref":"13"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"12"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"13"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"14"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkMode":1,"conditions":[{"timeout":{"_value":2.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{"_value":true},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"16"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"16"},"_targetNode":{"$ref":"17"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"18"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkAgainst":2,"checkAgainstValue":{"_name":"_wallJumpHitNormal"},"desiredValue":{"_value":1.0},"tolerance":{"_value":0.5},"considerCameraRotation":{"_value":true},"negate":{},"$type":"NodeCanvas.Tasks.Conditions.GetMovementInputDotProduct"},"_sourceNode":{"$ref":"19"},"_targetNode":{"$ref":"20"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"19"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"checkMode":1,"conditions":[{"actionName":{"_value":"Jump"},"actionPhase":{"_value":4},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},{"valueA":{"_name":"_currentYMoveDirection"},"checkType":2,"valueB":{},"_isDisabled":true,"$type":"NodeCanvas.Tasks.Conditions.CheckFloat"}],"$type":"NodeCanvas.Framework.ConditionList"},"_sourceNode":{"$ref":"21"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"22"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"timeout":{"_value":0.1},"$type":"NodeCanvas.Tasks.Conditions.Timeout"},"_sourceNode":{"$ref":"23"},"_targetNode":{"$ref":"24"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Jump"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"25"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"actionName":{"_value":"Sprint"},"actionPhase":{"_value":3},"$type":"NodeCanvas.Tasks.Conditions.CheckInput"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"0"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_condition":{"valueA":{"_name":"isGrounded","_targetVariableID":"619300a4-be8b-4ad4-ba2a-978468094ba2"},"valueB":{},"$type":"NodeCanvas.Tasks.Conditions.CheckBoolean"},"_sourceNode":{"$ref":"24"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.StateMachines.FSMConnection"},{"_sourceNode":{"$ref":"25"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.StateMachines.FSMConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{"isGrounded":{"_propertyPath":"UnityEngine.CharacterController.isGrounded","_name":"isGrounded","_id":"619300a4-be8b-4ad4-ba2a-978468094ba2","$type":"NodeCanvas.Framework.Variable`1[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"},"forwardRay":{"_propertyPath":"PlayerMovement.forwardRay","_name":"forwardRay","_id":"a2506ca5-1b47-4820-9921-3ff4ecc18564","$type":"NodeCanvas.Framework.Variable`1[[UnityEngine.RaycastHit, UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"airJumpsRemaining":{"_name":"airJumpsRemaining","_id":"23f0ddc0-c4e8-462f-a7e0-fdd8e818d08d","$type":"NodeCanvas.Framework.Variable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"},"rotationSpeed":{"_value":0.5,"_name":"rotationSpeed","_id":"3a7d1c7c-8fb6-4a99-b25a-b434b62d4611","$type":"NodeCanvas.Framework.Variable`1[[System.Single, @@ -376,7 +360,7 @@ MonoBehaviour: _version: 3.31 _category: _comments: - _translation: {x: 132, y: -162} - _zoomFactor: 1 + _translation: {x: -86, y: 614} + _zoomFactor: 0.9991574 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Assets/Player/Objects/Player.prefab b/Assets/Player/Objects/Player.prefab index bd9d49b..ff9a393 100644 --- a/Assets/Player/Objects/Player.prefab +++ b/Assets/Player/Objects/Player.prefab @@ -208,31 +208,32 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b3b4e13d59527d1429a62dde97c6a001, type: 3} m_Name: m_EditorClassIdentifier: - outputMoveDirection: {x: 0, y: 0, z: 0} - additionalMoveDirection: {x: 0, y: 0, z: 0} data: - moveSmoothing: - targetValue: {x: 0.5, y: 0.5} - currentValue: {x: 0.5, y: 0.5} + directionChangingSoftness: + targetValue: 1 + currentValue: 1 targetSmoothing: 1 targetEasing: 2 - defaultValue: {x: 0.5, y: 0.5} + currentSmoothing: 1 + defaultValue: 1 defaultSmoothing: 1 defaultEasing: 2 - acceleration: - targetValue: 10 - currentValue: 1.5 + directionSpinningHardness: + targetValue: 30 + currentValue: 30 targetSmoothing: 1 targetEasing: 2 - defaultValue: 5 + currentSmoothing: 1 + defaultValue: 3 defaultSmoothing: 1 defaultEasing: 2 - deacceleration: - targetValue: 20 - currentValue: 2 + directionSpinningSpeed: + targetValue: 5 + currentValue: 5 targetSmoothing: 1 targetEasing: 2 - defaultValue: 5 + currentSmoothing: 1 + defaultValue: 3 defaultSmoothing: 1 defaultEasing: 2 airDirectionDecay: @@ -240,15 +241,26 @@ MonoBehaviour: currentValue: 1 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 1 defaultSmoothing: 1 defaultEasing: 2 - softening: - targetValue: 4 - currentValue: 1 + acceleration: + targetValue: 28 + currentValue: 28 targetSmoothing: 1 targetEasing: 2 - defaultValue: 1 + currentSmoothing: 1 + defaultValue: 5 + defaultSmoothing: 1 + defaultEasing: 2 + deacceleration: + targetValue: 20 + currentValue: 20 + targetSmoothing: 1 + targetEasing: 2 + currentSmoothing: 1 + defaultValue: 5 defaultSmoothing: 1 defaultEasing: 2 moveSpeed: @@ -256,6 +268,7 @@ MonoBehaviour: currentValue: 15 targetSmoothing: 10 targetEasing: 2 + currentSmoothing: 10 defaultValue: 15 defaultSmoothing: 10 defaultEasing: 2 @@ -264,22 +277,25 @@ MonoBehaviour: currentValue: 1 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 1 defaultSmoothing: 1 defaultEasing: 2 gravityMax: - targetValue: 8 - currentValue: 8 + targetValue: 4 + currentValue: 4 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 8 defaultSmoothing: 1 defaultEasing: 2 gravityAcceleration: - targetValue: 5 - currentValue: 5 + targetValue: 15 + currentValue: 15 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 1 defaultSmoothing: 1 defaultEasing: 2 @@ -288,14 +304,16 @@ MonoBehaviour: currentValue: 1 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 1 defaultSmoothing: 1 defaultEasing: 2 - rotateFacing: + facingDirection: targetValue: 4 currentValue: 4 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 4 defaultSmoothing: 1 defaultEasing: 2 @@ -304,6 +322,7 @@ MonoBehaviour: currentValue: 5 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 5 defaultSmoothing: 1 defaultEasing: 2 @@ -312,6 +331,7 @@ MonoBehaviour: currentValue: 0.3 targetSmoothing: 1 targetEasing: 2 + currentSmoothing: 1 defaultValue: 0.3 defaultSmoothing: 1 defaultEasing: 2 @@ -625,6 +645,7 @@ MonoBehaviour: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"currentSpeed":{"_name":"currentSpeed","_id":"f585caab-68c5-4ead-85c4-cbc16c18655e","$type":"NodeCanvas.Framework.Variable`1[[System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"},"movementData":{"_propertyPath":"Reset.Units.UnitMovementHandler.data","_name":"movementData","_id":"357123c2-2d10-4425-a3c9-7341e810fc88","$type":"NodeCanvas.Framework.Variable`1[[Reset.Units.UnitMovementData, Core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"outputMoveDirection":{"_propertyPath":"Reset.Units.UnitMovementHandler.outputMoveDirection","_name":"outputMoveDirection","_id":"3b9833f5-870a-4182-9824-e31a9896eec2","$type":"NodeCanvas.Framework.Variable`1[[UnityEngine.Vector3, + UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"},"myVector3":{"_name":"myVector3","_id":"9367e2ee-ac93-43f7-9cd7-6a7cf167e07a","$type":"NodeCanvas.Framework.Variable`1[[UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"}}}' _objectReferences: [] _serializedVariables: @@ -649,6 +670,9 @@ MonoBehaviour: - _json: '{"_propertyPath":"Reset.Units.UnitMovementHandler.outputMoveDirection","_name":"outputMoveDirection","_id":"3b9833f5-870a-4182-9824-e31a9896eec2","$type":"NodeCanvas.Framework.Variable`1[[UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"}' _references: [] + - _json: '{"_name":"myVector3","_id":"9367e2ee-ac93-43f7-9cd7-6a7cf167e07a","$type":"NodeCanvas.Framework.Variable`1[[UnityEngine.Vector3, + UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]"}' + _references: [] --- !u!114 &43868462096200776 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/ItemTest.unity b/Assets/Scenes/ItemTest.unity index cfb637d..08c28e1 100644 --- a/Assets/Scenes/ItemTest.unity +++ b/Assets/Scenes/ItemTest.unity @@ -2971,19 +2971,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1478733240008970968, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.w - value: 0.9996973 + value: 0.99973595 objectReference: {fileID: 0} - target: {fileID: 1478733240008970968, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.x - value: -0.024602825 + value: -0.022979952 objectReference: {fileID: 0} - target: {fileID: 1478733240008970968, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.y - value: 0.000000011836157 + value: 3.1949018e-10 objectReference: {fileID: 0} - target: {fileID: 1478733240008970968, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.z - value: 2.9129085e-10 + value: 7.3437315e-12 objectReference: {fileID: 0} - target: {fileID: 1478733240008970968, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -3001,6 +3001,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} + - target: {fileID: 3229831872226355039, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: Composition.ScreenPosition.y + value: 0.14794445 + objectReference: {fileID: 0} - target: {fileID: 3716971538123186913, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_Name value: CameraGroup @@ -3019,24 +3023,48 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5136833180492354989, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.w - value: 0.9996973 + value: 0.99973595 objectReference: {fileID: 0} - target: {fileID: 5136833180492354989, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.x - value: -0.024602825 + value: -0.022979954 objectReference: {fileID: 0} - target: {fileID: 5136833180492354989, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.y - value: 0.000000011836157 + value: 3.1949024e-10 objectReference: {fileID: 0} - target: {fileID: 5136833180492354989, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalRotation.z - value: 2.9129105e-10 + value: 7.34381e-12 objectReference: {fileID: 0} - target: {fileID: 5136833180492354989, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: -89 objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowTopHeight.targetSmoothing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowTopRadius.targetSmoothing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowBottomHeight.targetSmoothing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowBottomRadius.targetSmoothing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowCenterHeight.targetSmoothing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 7070283194321853303, guid: 6ae1b39ffbe1f0f468d521bb08a8b547, type: 3} + propertyPath: data.orbitFollowCenterRadius.targetSmoothing + value: 20 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] diff --git a/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs b/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs index 59100d5..40f71a2 100644 --- a/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/ChangeCameraSettings.cs @@ -9,32 +9,36 @@ namespace NodeCanvas.Tasks.Actions { [Category("Reset")] [Description("Change Cinemachine camera settings for the player")] public class ChangeCameraSettings : ActionTask{ - [ParadoxNotion.Design.Header("Main Settings")] + [ParadoxNotion.Design.Header("Main Settings"), Space(8)] public FloatValueGroup fieldOfView = new (newLabel: "FOV"); - - [ParadoxNotion.Design.Header("Orbit Follow Ring Settings"), Space (5)] + public Vector3ValueGroup orbitTargetOffset = new(newLabel: "Target Offset"); [Space(5)]public Vector3ValueGroup orbitPositionDamping = new(newLabel: "Position Damping"); - public OrbitalFollowValueGroup orbitFollowTop = new (newLabel: "Top"); - public OrbitalFollowValueGroup orbitFollowCenter = new (newLabel: "Center"); - public OrbitalFollowValueGroup orbitFollowBottom = new (newLabel: "Bottom"); - + [ParadoxNotion.Design.Header("Orbit Follow Ring Settings"), Space (5)] + public OrbitalFollowValueGroup orbitFollowTop = new (newLabel: "Top Ring"); + public OrbitalFollowValueGroup orbitFollowCenter = new (newLabel: "Top Ring"); + [Space(8)] + public OrbitalFollowValueGroup orbitFollowBottom = new (newLabel: "Top Ring"); + public BoolValueGroup enableXAxis = new (newLabel: "Input Axis X Enabled"); public BoolValueGroup enableYAxis = new (newLabel: "Input Axis Y Enabled"); public FloatValueGroup axisLookXGain = new (newLabel: "Look Orbit X Gain"); public FloatValueGroup axisLookYGain = new (newLabel: "Look Orbit Y Gain"); - [ParadoxNotion.Design.Header("Rotation Composer Settings")] + [ParadoxNotion.Design.Header("Rotation Composer Settings"), Space(8)] public Vector2ValueGroup screenPosition = new (newLabel: "Screen Position"); - [ParadoxNotion.Design.Header("Camera Offset Settings")] + [ParadoxNotion.Design.Header("Camera Offset Settings"), Space(8)] public Vector3ValueGroup cameraOffset = new (newLabel: "Offset"); + + private CameraSettingsProcessor processor; //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(){ + processor = CameraSettingsProcessor.Instance; return null; } @@ -42,29 +46,28 @@ 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(){ - OrbitalFollowValueGroup.UpdateValue(orbitFollowTop, ref CameraSettingsProcessor.data.orbitFollowTopHeight.targetValue, ref CameraSettingsProcessor.original.orbitFollowTopRadius.targetValue); - OrbitalFollowValueGroup.UpdateValue(orbitFollowCenter, ref CameraSettingsProcessor.data.orbitFollowCenterHeight.targetValue, ref CameraSettingsProcessor.original.orbitFollowCenterRadius.targetValue); - OrbitalFollowValueGroup.UpdateValue(orbitFollowBottom, ref CameraSettingsProcessor.data.orbitFollowBottomHeight.targetValue, ref CameraSettingsProcessor.original.orbitFollowBottomRadius.targetValue); + OrbitalFollowValueGroup.UpdateValue(orbitFollowTop, processor.data.orbitFollowTopHeight, processor.data.orbitFollowTopRadius); + OrbitalFollowValueGroup.UpdateValue(orbitFollowCenter, processor.data.orbitFollowCenterHeight, processor.data.orbitFollowCenterRadius); + OrbitalFollowValueGroup.UpdateValue(orbitFollowBottom, processor.data.orbitFollowBottomHeight, processor.data.orbitFollowBottomRadius); - Vector3ValueGroup.UpdateValue(cameraOffset, ref CameraSettingsProcessor.data.cameraOffsetOffset.targetValue, ref CameraSettingsProcessor.original.cameraOffsetOffset.targetValue); + Vector3ValueGroup.UpdateValue(cameraOffset, processor.data.cameraOffsetOffset); - Vector3ValueGroup.UpdateValue(orbitPositionDamping, ref CameraSettingsProcessor.data.orbitPositionDamping.targetValue, ref CameraSettingsProcessor.original.cameraOffsetOffset.targetValue); - Vector3ValueGroup.UpdateValue(orbitTargetOffset, ref CameraSettingsProcessor.data.orbitTargetOffset.targetValue, ref CameraSettingsProcessor.original.cameraOffsetOffset.targetValue); + Vector3ValueGroup.UpdateValue(orbitPositionDamping, processor.data.orbitPositionDamping); + Vector3ValueGroup.UpdateValue(orbitTargetOffset, processor.data.orbitTargetOffset); - Vector2ValueGroup.UpdateValue(screenPosition, ref CameraSettingsProcessor.data.rotationComposerScreenPos.targetValue, ref CameraSettingsProcessor.original.rotationComposerScreenPos.targetValue); - FloatValueGroup.UpdateValue(fieldOfView, ref CameraSettingsProcessor.data.mainFieldOfView.targetValue, ref CameraSettingsProcessor.original.mainFieldOfView.targetValue); + Vector2ValueGroup.UpdateValue(screenPosition, processor.data.rotationComposerScreenPos); - FloatValueGroup.UpdateValue(axisLookXGain, ref CameraSettingsProcessor.data.axisLookGainX.targetValue, ref CameraSettingsProcessor.original.axisLookGainX.targetValue); - FloatValueGroup.UpdateValue(axisLookYGain, ref CameraSettingsProcessor.data.axisLookGainY.targetValue, ref CameraSettingsProcessor.original.axisLookGainY.targetValue); + FloatValueGroup.UpdateValue(fieldOfView, processor.data.mainFieldOfView); - BoolValueGroup.UpdateValue(enableXAxis, ref CameraSettingsProcessor.data.axisLookEnabledX.targetValue, ref CameraSettingsProcessor.original.axisLookEnabledX.targetValue); - BoolValueGroup.UpdateValue(enableYAxis, ref CameraSettingsProcessor.data.axisLookEnabledY.targetValue, ref CameraSettingsProcessor.original.axisLookEnabledY.targetValue); + FloatValueGroup.UpdateValue(axisLookXGain, processor.data.axisLookGainX); + FloatValueGroup.UpdateValue(axisLookYGain, processor.data.axisLookGainY); + + BoolValueGroup.UpdateValue(enableXAxis, processor.data.axisLookEnabledX); + BoolValueGroup.UpdateValue(enableYAxis, processor.data.axisLookEnabledY); EndAction(true); } - - //Called once per frame while the action is active. protected override void OnUpdate() { diff --git a/Assets/Scripts/Core/Graph Tasks/DoGrapplePull.cs b/Assets/Scripts/Core/Graph Tasks/DoGrapplePull.cs index 612c412..cda0334 100644 --- a/Assets/Scripts/Core/Graph Tasks/DoGrapplePull.cs +++ b/Assets/Scripts/Core/Graph Tasks/DoGrapplePull.cs @@ -69,7 +69,7 @@ namespace NodeCanvas.Tasks.Actions { directionOnStart = agent.transform.position.DirectionTo(grapplePoint.value); // Get the current move direction - velocityOnStart = agent.outputMoveDirection; + // velocityOnStart = agent.outputMoveDirection; // NOTE: Deprecated by new movement values // For setting finalDirection's initial value, first compose the swing variables one-time Vector3 velocityWhenMoving = CalculateSwingDirections(Vector3.Distance(agent.transform.position, grapplePoint.value), directionOnStart); @@ -86,7 +86,7 @@ namespace NodeCanvas.Tasks.Actions { //Called once per frame while the action is active. protected override void OnUpdate(){ - agent.outputMoveDirection = Vector3.MoveTowards(agent.outputMoveDirection, Vector3.zero, .5f); + // agent.outputMoveDirection = Vector3.MoveTowards(agent.outputMoveDirection, Vector3.zero, .5f); // NOTE: Deprecated by new movement values // Basic variables, direction to point and current distnace Vector3 directionToPoint = agent.transform.position.DirectionTo(grapplePoint.value); @@ -178,7 +178,7 @@ namespace NodeCanvas.Tasks.Actions { gizmoFinalDirection = finalDirection; // Finalize the movement to the controller - agent.SetNewDirection(Vector3.Lerp(agent.additionalMoveDirection, finalDirection.Flatten(null, 0), 1f * Time.deltaTime)); + // agent.SetNewDirection(Vector3.Lerp(agent.additionalMoveDirection, finalDirection.Flatten(null, 0), 1f * Time.deltaTime)); // NOTE: Deprecated by new movement values agent.SetNewGravity(finalDirection.y); agent.SmoothToSpeed(speed, 25f * Time.deltaTime); diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs index 33e6347..155389a 100644 --- a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeDirectionSettings.cs @@ -10,15 +10,9 @@ namespace Reset.Units { 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; - - public FloatValueGroup directionSmoothing = new FloatValueGroup("Direction Smoothing"); + public FloatValueGroup directionChangingSoftness = new FloatValueGroup("Direction Changing Softness"); + public FloatValueGroup directionSpinningHardness = new FloatValueGroup("Direction Spinning Hardness"); + public FloatValueGroup directionSpinningSpeed = new FloatValueGroup("Direction Spinning Speed"); //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 @@ -30,23 +24,9 @@ namespace Reset.Units { //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); - } + FloatValueGroup.UpdateValue(directionChangingSoftness, agent.data.directionChangingSoftness); + FloatValueGroup.UpdateValue(directionSpinningHardness, agent.data.directionSpinningHardness); + FloatValueGroup.UpdateValue(directionSpinningSpeed, agent.data.directionSpinningSpeed); EndAction(true); } diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs index 406a5f4..05a5ea2 100644 --- a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeGravitySettings.cs @@ -9,10 +9,8 @@ namespace Reset.Units { [Category("Reset/Movement")] public class ChangeGravitySettings : ActionTask{ - [SerializeField] public FloatValueGroup jumpPower = new FloatValueGroup("Jump Power"); - [SerializeField] public FloatValueGroup jumpPowerDecay = new FloatValueGroup("Jump Power Decay"); + [SliderField(0f, 1f), SerializeField] public FloatValueGroup airDirectionDecay = new FloatValueGroup("Air Direction Decay"); - [SerializeField] public FloatValueGroup gravityPower = new FloatValueGroup("Gravity Power"); [SerializeField] public FloatValueGroup gravityMax = new FloatValueGroup("Gravity Max"); [SerializeField] public FloatValueGroup gravityAcceleration = new FloatValueGroup("Gravity Acceleration"); [SerializeField] public FloatValueGroup gravityScale = new FloatValueGroup("Gravity Scale"); @@ -27,23 +25,10 @@ namespace Reset.Units { //Call EndAction() to mark the action as finished, either in success or failure. //EndAction can be called from anywhere. protected override void OnExecute() { - // Deprecated by unified gravity system, including SetNewGravity - // // Jump - // FloatValueGroup.UpdateValue(jumpPower, ref agent.data.jumpPower.value, ref agent.defaultData.jumpPower.value); - // ValueGroup.ChangeSmoothingEasing(jumpPower, ref agent.data.jumpPower.currentSmoothing, - // ref agent.data.jumpPower.easing, ref agent.defaultData.jumpPower.smoothing, ref agent.defaultData.jumpPower.easing); - - // FloatValueGroup.UpdateValue(jumpPowerDecay, agent.data.jumpPowerDecay); - - // Deprecated by SetNewGravity - // FloatValueGroup.UpdateValue(gravityPower, ref agent.data.gravityPower.value, ref agent.defaultData.gravityPower.value); - // ValueGroup.ChangeSmoothingEasing(gravityPower, ref agent.data.gravityPower.currentSmoothing, - // ref agent.data.gravityPower.easing, ref agent.defaultData.gravityPower.smoothing, ref agent.defaultData.gravityPower.easing); + FloatValueGroup.UpdateValue(airDirectionDecay, agent.data.airDirectionDecay); FloatValueGroup.UpdateValue(gravityMax, agent.data.gravityMax); - FloatValueGroup.UpdateValue(gravityAcceleration, agent.data.gravityAcceleration); - FloatValueGroup.UpdateValue(gravityScale, agent.data.gravityScale); } diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs index c88f96e..5ae3e2f 100644 --- a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeMoveSpeedSettings.cs @@ -22,18 +22,9 @@ namespace Reset.Units { //Call EndAction() to mark the action as finished, either in success or failure. //EndAction can be called from anywhere. protected override void OnExecute() { - FloatValueGroup.UpdateValue(moveSpeed, ref agent.data.moveSpeed.targetValue, ref agent.data.moveSpeed.defaultValue); - ValueGroup.ChangeSmoothingEasing(moveSpeed, ref agent.data.moveSpeed.targetSmoothing, - ref agent.data.moveSpeed.targetEasing, ref agent.data.moveSpeed.defaultSmoothing, ref agent.data.moveSpeed.defaultEasing); - - FloatValueGroup.UpdateValue(acceleration, ref agent.data.acceleration.targetValue, ref agent.data.acceleration.defaultValue); - ValueGroup.ChangeSmoothingEasing(acceleration, ref agent.data.acceleration.targetSmoothing, - ref agent.data.acceleration.targetEasing, ref agent.data.acceleration.defaultSmoothing, ref agent.data.acceleration.defaultEasing); - - FloatValueGroup.UpdateValue(deacceleration, ref agent.data.deacceleration.targetValue, ref agent.data.deacceleration.defaultValue); - ValueGroup.ChangeSmoothingEasing(deacceleration, ref agent.data.deacceleration.targetSmoothing, - ref agent.data.deacceleration.targetEasing, ref agent.data.deacceleration.defaultSmoothing, ref agent.data.deacceleration.defaultEasing); - + FloatValueGroup.UpdateValue(moveSpeed, agent.data.moveSpeed); + FloatValueGroup.UpdateValue(acceleration, agent.data.acceleration); + FloatValueGroup.UpdateValue(deacceleration, agent.data.deacceleration); EndAction(true); } diff --git a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs index 4259129..361bc1c 100644 --- a/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs +++ b/Assets/Scripts/Core/Graph Tasks/Movement Settings Changes/ChangeRotationSettings.cs @@ -1,12 +1,18 @@ +using System; +using Codice.Client.BaseCommands; using NodeCanvas.Framework; using ParadoxNotion.Design; +using Reset.Core; +using UnityEngine; namespace Reset.Units { [Category("Reset/Movement")] public class ChangeRotationSettings : ActionTask { - + [SerializeField] public EnumValueGroup facingDirection = new EnumValueGroup("Facing Direction", PlayerFacingDirection.TowardsTarget); + [SerializeField] public FloatValueGroup rotationSpeed = new (newLabel: "Rotation Speed"); + //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() { @@ -16,7 +22,10 @@ namespace Reset.Units { //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() { + protected override void OnExecute(){ + EnumValueGroup.UpdateValue(facingDirection, agent.data.facingDirection); + FloatValueGroup.UpdateValue(rotationSpeed, agent.data.rotationSpeed); + EndAction(true); } diff --git a/Assets/Scripts/Core/Graph Tasks/UpdateMovementDirection.cs b/Assets/Scripts/Core/Graph Tasks/UpdateMovementDirection.cs index e498a2d..8179295 100644 --- a/Assets/Scripts/Core/Graph Tasks/UpdateMovementDirection.cs +++ b/Assets/Scripts/Core/Graph Tasks/UpdateMovementDirection.cs @@ -66,7 +66,7 @@ namespace NodeCanvas.Tasks.Actions { switch (playerFacingDirection.value) { case PlayerFacingDirection.TowardsTarget: break; - case PlayerFacingDirection.MatchForward: // TODO: Recomment + case PlayerFacingDirection.MatchInput: // TODO: Recomment // targetDirection = agent.transform.forward * inputMovement.magnitude; targetDirection = inputMovement; break; diff --git a/Assets/Scripts/Core/ValueGroup.cs b/Assets/Scripts/Core/ValueGroup.cs index cd6ec2f..1c43f11 100644 --- a/Assets/Scripts/Core/ValueGroup.cs +++ b/Assets/Scripts/Core/ValueGroup.cs @@ -15,23 +15,23 @@ namespace Reset.Core{ public BBParameter Easing{ get; set; } } - public static void ChangeSmoothingEasing(ISmoothable valueGroup, ref float targetSmoothing, - ref float targetEasing, ref float defaultSmoothing, ref float defaultEasing){ + public static void ChangeSmoothingEasing(ISmoothable valueGroup, SettingValue settingValue){ switch (valueGroup.changeSmoothing.value) { case ValueChangeAction.NewValue: - targetSmoothing = valueGroup.Smoothing.value; + settingValue.targetSmoothing = valueGroup.Smoothing.value; + settingValue.currentSmoothing = valueGroup.Smoothing.value; break; case ValueChangeAction.ResetValue: - targetSmoothing = defaultSmoothing; + settingValue.targetSmoothing = settingValue.defaultSmoothing; break; } switch (valueGroup.changeEasing.value) { case ValueChangeAction.NewValue: - targetEasing = valueGroup.Easing.value; + settingValue.targetEasing = valueGroup.Easing.value; break; case ValueChangeAction.ResetValue: - targetEasing = defaultEasing; + settingValue.targetEasing = settingValue.defaultEasing; break; } } @@ -96,12 +96,54 @@ namespace Reset.Core{ changeEasing = new BBParameter(); Easing = new BBParameter().value = 0f; + } + + public static void UpdateValue(OrbitalFollowValueGroup valueGroup, SettingValue heightSetting, SettingValue radiusSetting){ + switch (valueGroup.changeHeight.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + heightSetting.Value = valueGroup.height.value; + break; + case ValueChangeAction.ResetValue: + heightSetting.Value = heightSetting.defaultValue; + break; + case ValueChangeAction.RelativeValue: + heightSetting.Value += valueGroup.height.value; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + switch (valueGroup.changeRadius.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + radiusSetting.Value = valueGroup.radius.value; + break; + case ValueChangeAction.ResetValue: + radiusSetting.Value = radiusSetting.defaultValue; + break; + case ValueChangeAction.RelativeValue: + radiusSetting.Value += valueGroup.radius.value; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + ValueGroup.ChangeSmoothingEasing(valueGroup, heightSetting); + + + // Debug.Log($"{heightSetting.targetSmoothing} {valueGroup.Smoothing.value}"); + ValueGroup.ChangeSmoothingEasing(valueGroup, radiusSetting); } + [Obsolete] public static void UpdateValue(OrbitalFollowValueGroup valueGroup, ref float targetProperty, ref float defaultProperty){ switch (valueGroup.changeHeight.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: targetProperty = valueGroup.height.value; break; @@ -111,6 +153,7 @@ namespace Reset.Core{ } switch (valueGroup.changeRadius.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: targetProperty = valueGroup.radius.value; break; @@ -133,14 +176,18 @@ namespace Reset.Core{ value = new AnimationCurve(); label = newLabel; } - - public static void UpdateValue(CurveValueGroup valueGroup, ref AnimationCurve targetProperty, ref AnimationCurve defaultProperty){ + + public static void UpdateValue(CurveValueGroup valueGroup, SettingValue settingValue){ switch (valueGroup.changeValue.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: - targetProperty = valueGroup.value.value; + settingValue.Value = valueGroup.value.value; break; case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; + settingValue.Value = settingValue.defaultValue; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); break; } } @@ -159,16 +206,21 @@ namespace Reset.Core{ label = newLabel; } - public static void UpdateValue(EnumValueGroup valueGroup, ref Enum targetProperty, ref Enum defaultProperty){ + public static void UpdateValue(EnumValueGroup valueGroup, SettingValue settingValue){ switch (valueGroup.changeValue.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: - targetProperty = valueGroup.value.value; + settingValue.Value = (T)(object)valueGroup.value.value; break; case ValueChangeAction.ResetValue: - targetProperty = defaultProperty; + settingValue.Value = settingValue.defaultValue; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); break; } } + } public class Vector3ValueGroup : ValueGroup.ISmoothable{ // Done @@ -227,8 +279,57 @@ namespace Reset.Core{ changeEasing = new BBParameter(); Easing = new BBParameter().value = 0f; + + } + + public static void UpdateValue(Vector3ValueGroup valueGroup, SettingValue settingValue){ + Vector3 newValue = settingValue.Value; + + switch (valueGroup.changeX.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + newValue.x = valueGroup.value.value.x; + break; + case ValueChangeAction.ResetValue: + newValue.x = settingValue.defaultValue.x; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + switch (valueGroup.changeY.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + newValue.y = valueGroup.value.value.y; + break; + case ValueChangeAction.ResetValue: + newValue.y = settingValue.defaultValue.y; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + switch (valueGroup.changeZ.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + newValue.z = valueGroup.value.value.z; + break; + case ValueChangeAction.ResetValue: + newValue.z = settingValue.defaultValue.z; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + settingValue.Value = newValue; + + ValueGroup.ChangeSmoothingEasing(valueGroup, settingValue); } + [Obsolete] public static void UpdateValue(Vector3ValueGroup valueGroup, ref Vector3 targetProperty, ref Vector3 defaultProperty){ switch (valueGroup.changeX.value) { case ValueChangeAction.NewValue: @@ -313,7 +414,42 @@ namespace Reset.Core{ changeEasing = new BBParameter(); Easing = new BBParameter().value = 0f; } + + public static void UpdateValue(Vector2ValueGroup valueGroup, SettingValue settingValue){ + Vector2 newValue = settingValue.Value; + + switch (valueGroup.changeX.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + newValue.x = valueGroup.value.value.x; + break; + case ValueChangeAction.ResetValue: + newValue.x = settingValue.defaultValue.x; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + switch (valueGroup.changeY.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + newValue.y = valueGroup.value.value.y; + break; + case ValueChangeAction.ResetValue: + newValue.y = settingValue.defaultValue.y; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + + settingValue.Value = newValue; + + ValueGroup.ChangeSmoothingEasing(valueGroup, settingValue); + } + + [Obsolete] public static void UpdateValue(Vector2ValueGroup valueGroup, ref Vector2 targetProperty, ref Vector2 defaultProperty){ switch (valueGroup.changeX.value) { case ValueChangeAction.NewValue: @@ -386,6 +522,7 @@ namespace Reset.Core{ public static void UpdateValue(FloatValueGroup valueGroup, SettingValue settingValue){ switch (valueGroup.changeValue.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: settingValue.Value = valueGroup.value.value; break; @@ -395,12 +532,15 @@ namespace Reset.Core{ case ValueChangeAction.RelativeValue: settingValue.Value += valueGroup.value.value; break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; } - ValueGroup.ChangeSmoothingEasing(valueGroup, ref settingValue.targetSmoothing, - ref settingValue.targetEasing, ref settingValue.defaultEasing, ref settingValue.defaultSmoothing); + ValueGroup.ChangeSmoothingEasing(valueGroup, settingValue); } + [Obsolete] public static void UpdateValue(FloatValueGroup valueGroup, ref float targetProperty, ref float defaultProperty){ Debug.LogWarning("Deprecated call of UpdateValue(). Use the new one with only two arguments!"); switch (valueGroup.changeValue.value) { @@ -429,8 +569,25 @@ namespace Reset.Core{ changeValue = ValueChangeAction.NoChange; } + public static void UpdateValue(BoolValueGroup valueGroup, SettingValue settingValue){ + switch (valueGroup.changeValue.value) { + case ValueChangeAction.NoChange: break; + case ValueChangeAction.NewValue: + settingValue.Value = valueGroup.value.value; + break; + case ValueChangeAction.ResetValue: + settingValue.Value = settingValue.defaultValue; + break; + default: + Debug.LogError($"No value was changed for part of {valueGroup.label} because this ValueChangeAction was not supported."); + break; + } + } + + [Obsolete] public static void UpdateValue(BoolValueGroup valueGroup, ref bool targetProperty, ref bool defaultProperty){ switch (valueGroup.changeValue.value) { + case ValueChangeAction.NoChange: break; case ValueChangeAction.NewValue: targetProperty = valueGroup.value.value; break; diff --git a/Assets/Scripts/Core/ValueGroupEditors.cs b/Assets/Scripts/Core/ValueGroupEditors.cs index a2537de..d293b2a 100644 --- a/Assets/Scripts/Core/ValueGroupEditors.cs +++ b/Assets/Scripts/Core/ValueGroupEditors.cs @@ -16,14 +16,10 @@ using UnityEngine; 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.Label(_instance.label, ValueGroupEditorUtilities.titleText); GUILayout.BeginHorizontal(); // Create the x settings enum @@ -66,13 +62,9 @@ using UnityEngine; 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.Label(_instance.label, ValueGroupEditorUtilities.titleText); GUILayout.BeginHorizontal(); // Create the x settings enum @@ -105,14 +97,11 @@ using UnityEngine; 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.Label(_instance.label, ValueGroupEditorUtilities.titleText); GUILayout.BeginHorizontal(); // Create the x settings enum @@ -152,22 +141,9 @@ using UnityEngine; 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); + GUILayout.Label(_instance.label, ValueGroupEditorUtilities.titleText); // End the label GUILayout.EndHorizontal(); @@ -210,14 +186,10 @@ using UnityEngine; 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.Label(_instance.label, ValueGroupEditorUtilities.titleText); GUILayout.BeginHorizontal(); // Create the x settings enum @@ -292,14 +264,10 @@ using UnityEngine; 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.Label(_instance.label, ValueGroupEditorUtilities.titleText); GUILayout.BeginHorizontal(); // Create the x settings enum @@ -354,49 +322,73 @@ using UnityEngine; // Set layout options for the label and the float fields GUILayoutOption[] floatOptions = new GUILayoutOption[] { - GUILayout.Width(300.0f), - GUILayout.MinWidth(20.0f), + // GUILayout.Width(300.0f), + // GUILayout.MinWidth(20.0f), GUILayout.ExpandWidth(true), }; - - GUILayoutOption[] labelOptions = new GUILayoutOption[]{ - GUILayout.Width(60.0f), - }; - // Start a Horiztonal Section + // Add the label + GUILayout.Label(_instance.label, ValueGroupEditorUtilities.titleText); + + // Start the smoothing and easing 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); + + GUIStyle smallText= new GUIStyle{ + fontSize = 10, + padding = new RectOffset(8, 0, 0,0), + normal ={ + textColor = Color.gray + Color.gray / 2f + } + }; + + // Start the left side for height + GUILayout.BeginVertical(); + + // Draw the label + GUILayout.BeginHorizontal(); + GUILayout.Label("Height", smallText); + GUILayout.EndHorizontal(); + + // Height + BBParameterEditor.ParameterField("", _instance.changeHeight); + + if (_instance.changeHeight.value == ValueChangeAction.NewValue || _instance.changeHeight.value == ValueChangeAction.RelativeValue){ + // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); + BBParameterEditor.ParameterField("", _instance.height); } 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); + + // Close height + GUILayout.EndVertical(); + + // Start the right for radius + GUILayout.BeginVertical(); + + // Draw the label + GUILayout.BeginHorizontal(); + GUILayout.Label("Radius", smallText); + GUILayout.EndHorizontal(); + + // Radius + BBParameterEditor.ParameterField("", _instance.changeRadius); + + if (_instance.changeRadius.value == ValueChangeAction.NewValue || _instance.changeRadius.value == ValueChangeAction.RelativeValue){ + // _instance.value = EditorGUILayout.FloatField(_instance.value, floatOptions); + BBParameterEditor.ParameterField("", _instance.radius); } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.TextField(_instance.changeRadius.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); EditorGUI.EndDisabledGroup(); } - - // Close this line up + + // Close easing + GUILayout.EndVertical(); + + GUILayout.Space(8); + GUILayout.EndHorizontal(); ValueGroupEditorUtilities.DrawEasingAndSmoothingSection(_instance); @@ -463,7 +455,7 @@ using UnityEngine; EditorGUILayout.TextField(_instance.changeSmoothing.value == ValueChangeAction.NoChange ? "Unchanged" : "Reset", floatOptions); EditorGUI.EndDisabledGroup(); } - + // Close easing GUILayout.EndVertical(); @@ -477,5 +469,14 @@ using UnityEngine; GUILayout.MinWidth(20.0f), GUILayout.ExpandWidth(true), }; + + public static GUIStyle titleText = new GUIStyle{ + fontSize = 12, + fontStyle = FontStyle.Bold, + padding = new RectOffset(8, 0, 3,0), + normal ={ + textColor = Color.white + } + }; } #endif diff --git a/Assets/Scripts/Player/CameraSettingData.cs b/Assets/Scripts/Player/CameraSettingData.cs index 480980c..7b166d2 100644 --- a/Assets/Scripts/Player/CameraSettingData.cs +++ b/Assets/Scripts/Player/CameraSettingData.cs @@ -1,39 +1,37 @@ using System; using System.Collections.Generic; +using Sirenix.OdinInspector; using UnityEngine; -public struct CameraSettingData : ICloneable{ - public SettingValue mainFieldOfView; +[Serializable] +public class CameraSettingData{ + [Title("Field of View"), HideLabel, InlineProperty] public SettingValue mainFieldOfView = new SettingValue(0f); - public SettingValue orbitPositionDamping; - public SettingValue orbitTargetOffset; + [Title("Orbit Position Damping"), HideLabel, InlineProperty] public SettingValue orbitPositionDamping = new SettingValue(Vector3.zero); + [Title("Orbit Target Offset"), HideLabel, InlineProperty] public SettingValue orbitTargetOffset= new SettingValue(Vector3.zero); - public SettingValue axisLookEnabledX; - public SettingValue axisLookEnabledY; + [Title("X Axis Look Enabled"), HideLabel, InlineProperty] public SettingValue axisLookEnabledX = new SettingValue(true); + [Title("Y Axis Look Enabled"), HideLabel, InlineProperty] public SettingValue axisLookEnabledY = new SettingValue(true); - public SettingValue axisLookGainX; - public SettingValue axisLookGainY; + [Title("X Axis Look Gain"), HideLabel, InlineProperty] public SettingValue axisLookGainX = new SettingValue(0f); + [Title("Y Axis Look Gain"), HideLabel, InlineProperty] public SettingValue axisLookGainY = new SettingValue(0f); - public SettingValue orbitFollowTopHeight; - public SettingValue orbitFollowTopRadius; - public SettingValue orbitFollowCenterHeight; - public SettingValue orbitFollowCenterRadius; - public SettingValue orbitFollowBottomHeight; - public SettingValue orbitFollowBottomRadius; + [Title("Orbit Follow Top Height"), HideLabel, InlineProperty] public SettingValue orbitFollowTopHeight = new SettingValue(0f); + [Title("Orbit Follow Top Radius"), HideLabel, InlineProperty] public SettingValue orbitFollowTopRadius = new SettingValue(0f); + [Title("Orbit Follow Center Height"), HideLabel, InlineProperty] public SettingValue orbitFollowCenterHeight = new SettingValue(0f); + [Title("Orbit Follow Center Radius"), HideLabel, InlineProperty] public SettingValue orbitFollowCenterRadius = new SettingValue(0f); + [Title("Orbit Follow Bottom Height"), HideLabel, InlineProperty] public SettingValue orbitFollowBottomHeight = new SettingValue(0f); + [Title("Orbit Follow Bottom Radius"), HideLabel, InlineProperty] public SettingValue orbitFollowBottomRadius = new SettingValue(0f); - public SettingValue rotationComposerScreenPos; + public SettingValue rotationComposerScreenPos= new SettingValue(Vector2.zero); - public SettingValue cameraOffsetOffset; - - public object Clone(){ - return MemberwiseClone(); - } + public SettingValue cameraOffsetOffset= new SettingValue(Vector3.zero); public List GetAllSettings(){ var outputList = new List(); - IResettableSettingValue[] settings = new[]{ - mainFieldOfView as IResettableSettingValue, + IResettableSettingValue[] settings = { + mainFieldOfView, orbitPositionDamping, orbitTargetOffset, axisLookEnabledX, diff --git a/Assets/Scripts/Player/CameraSettingsProcessor.cs b/Assets/Scripts/Player/CameraSettingsProcessor.cs index 46dd7d6..462adb9 100644 --- a/Assets/Scripts/Player/CameraSettingsProcessor.cs +++ b/Assets/Scripts/Player/CameraSettingsProcessor.cs @@ -1,3 +1,4 @@ +using System; using Reset.Core; using Sirenix.OdinInspector; using Unity.Cinemachine; @@ -6,14 +7,8 @@ using UnityEngine; public class CameraSettingsProcessor : MonoBehaviour{ public static CameraSettingsProcessor Instance{ get; private set; } - [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; + [ShowInInspector, FoldoutGroup("Camera Data", expanded: true), InlineProperty, HideLabel] + public CameraSettingData data; public static GameObject mainCamera; @@ -38,59 +33,32 @@ public class CameraSettingsProcessor : MonoBehaviour{ rotComp = mainCamera.GetComponent(); offset = mainCamera.GetComponent(); axisCont = mainCamera.GetComponent(); - + + // Quick check for a camera settings + if (data == null) { + Debug.LogWarning("No Camera Settings Data was found on processing. One will be created. Is this intentional? This will have strong effects on camera movement"); + data = new CameraSettingData(); + } + // Initialize camera settings values from current values - data.mainFieldOfView.targetValue = main.Lens.FieldOfView; - - data.orbitPositionDamping.targetValue = orbit.TrackerSettings.PositionDamping; - data.orbitTargetOffset.targetValue = orbit.TargetOffset; - - data.axisLookEnabledX.targetValue = axisCont.Controllers[0].Enabled; - data.axisLookEnabledY.targetValue = axisCont.Controllers[1].Enabled; - - data.axisLookGainX.targetValue = axisCont.Controllers[0].Input.Gain; - data.axisLookGainY.targetValue = axisCont.Controllers[1].Input.Gain; - - data.orbitFollowTopHeight.targetValue = orbit.Orbits.Top.Height; - data.orbitFollowTopRadius.targetValue = orbit.Orbits.Top.Radius; - data.orbitFollowCenterHeight.targetValue = orbit.Orbits.Center.Height; - data.orbitFollowCenterRadius.targetValue = orbit.Orbits.Center.Radius; - data.orbitFollowBottomHeight.targetValue = orbit.Orbits.Bottom.Height; - data.orbitFollowBottomRadius.targetValue = orbit.Orbits.Bottom.Radius; - - data.rotationComposerScreenPos.targetValue = rotComp.Composition.ScreenPosition; - data.cameraOffsetOffset.targetValue = offset.Offset; - - // And copy to the original - original = (CameraSettingData)data.Clone(); + InitializeAllSettings(); } - + void Update(){ - // EaseToNewSmoothingValues(); - // ProcessCameraValues(); + SmoothCameraSettings(); + ApplyCameraSettings(); } - void EaseToNewSmoothingValues(){ - data.mainFieldOfView.SmoothAndEase(); - - data.orbitPositionDamping.SmoothAndEase(); - data.orbitTargetOffset.SmoothAndEase(); - - data.axisLookGainX.SmoothAndEase(); - data.axisLookGainY.SmoothAndEase(); - - data.orbitFollowTopHeight.SmoothAndEase(); - data.orbitFollowTopRadius.SmoothAndEase(); - data.orbitFollowCenterHeight.SmoothAndEase(); - data.orbitFollowCenterRadius.SmoothAndEase(); - data.orbitFollowBottomHeight.SmoothAndEase(); - data.orbitFollowBottomRadius.SmoothAndEase(); + void SmoothCameraSettings(){ + var settings = data.GetAllSettings(); - data.rotationComposerScreenPos.SmoothAndEase(); - data.cameraOffsetOffset.SmoothAndEase(); + for (int i = 0; i < settings.Count; i++) { + settings[i].SmoothAndEase(); + } } - void ProcessCameraValues(){ + // Responsible for actively applying the settings to the Cinemachine components + void ApplyCameraSettings(){ main.Lens.FieldOfView = data.mainFieldOfView.Value; axisCont.Controllers[0].Enabled = data.axisLookEnabledX.Value; @@ -113,9 +81,30 @@ public class CameraSettingsProcessor : MonoBehaviour{ offset.Offset = data.cameraOffsetOffset.Value; } - + [Button] void InitializeAllSettings(){ + data.mainFieldOfView.targetValue = main.Lens.FieldOfView; + + data.orbitPositionDamping.targetValue = orbit.TrackerSettings.PositionDamping; + data.orbitTargetOffset.targetValue = orbit.TargetOffset; + + data.axisLookEnabledX.targetValue = axisCont.Controllers[0].Enabled; + data.axisLookEnabledY.targetValue = axisCont.Controllers[1].Enabled; + + data.axisLookGainX.targetValue = axisCont.Controllers[0].Input.Gain; + data.axisLookGainY.targetValue = axisCont.Controllers[1].Input.Gain; + + data.orbitFollowTopHeight.targetValue = orbit.Orbits.Top.Height; + data.orbitFollowTopRadius.targetValue = orbit.Orbits.Top.Radius; + data.orbitFollowCenterHeight.targetValue = orbit.Orbits.Center.Height; + data.orbitFollowCenterRadius.targetValue = orbit.Orbits.Center.Radius; + data.orbitFollowBottomHeight.targetValue = orbit.Orbits.Bottom.Height; + data.orbitFollowBottomRadius.targetValue = orbit.Orbits.Bottom.Radius; + + data.rotationComposerScreenPos.targetValue = rotComp.Composition.ScreenPosition; + data.cameraOffsetOffset.targetValue = offset.Offset; + var allSettings = data.GetAllSettings(); for (int i = 0; i < allSettings.Count; i++) { allSettings[i].Initialize(); diff --git a/Assets/Scripts/Player/PlayerFacingDirection.cs b/Assets/Scripts/Player/PlayerFacingDirection.cs index 06f9872..fceb707 100644 --- a/Assets/Scripts/Player/PlayerFacingDirection.cs +++ b/Assets/Scripts/Player/PlayerFacingDirection.cs @@ -1,7 +1,7 @@ namespace Reset.Units{ public enum PlayerFacingDirection{ TowardsTarget = 0, - MatchForward, + MatchInput, MatchCamera, Static, Momentum, diff --git a/Assets/Scripts/Player/ResolvedMovement.cs b/Assets/Scripts/Player/ResolvedMovement.cs index 6d1467e..3a555f0 100644 --- a/Assets/Scripts/Player/ResolvedMovement.cs +++ b/Assets/Scripts/Player/ResolvedMovement.cs @@ -7,14 +7,14 @@ namespace Reset.Units{ public struct MoveDirection{ private Transform owner; + // Both are in world space, and translated to local private Vector2 _moveRaw; - private Vector2 _moveDir; // Always world?? - + private Vector2 _moveDir; + [ShowInInspector] public Vector2 World{ get{ DebugOverlayDrawer.ChangeValue("Movement", "_moveDir", _moveDir); - // return owner.TransformDirection(_moveDir.ToVector3()).ToVector2(); return _moveDir; } set{ @@ -23,14 +23,9 @@ namespace Reset.Units{ } [ShowInInspector] - public Vector2 Local{ - get => owner.InverseTransformDirection(_moveDir.ToVector3()).ToVector2(); - - private set { - // _moveDir = value; - } - } + public Vector2 Local => owner.InverseTransformDirection(_moveDir.ToVector3()).ToVector2(); + [ShowInInspector, PropertySpace(5)] public Vector2 RawWorld{ get{ DebugOverlayDrawer.ChangeValue("Movement", "_moveRaw", _moveRaw); @@ -42,11 +37,9 @@ namespace Reset.Units{ } } - public Vector2 RawLocal{ - get => owner.InverseTransformDirection(_moveRaw.ToVector3()).ToVector2(); - } - - + [ShowInInspector] + public Vector2 RawLocal => owner.InverseTransformDirection(_moveRaw.ToVector3()).ToVector2(); + public MoveDirection(Transform ownerTransform){ owner = ownerTransform; _moveDir = Vector2.zero; @@ -54,7 +47,7 @@ namespace Reset.Units{ } } - [ShowInInspector] public MoveDirection moveDirection; + [ShowInInspector, InlineProperty, BoxGroup("Direction"), HideLabel] public MoveDirection moveDirection; public float moveSpeed; public Quaternion rotation; public float rotationSpeed; diff --git a/Assets/Scripts/Player/SettingValue.cs b/Assets/Scripts/Player/SettingValue.cs index 1eaf8b1..a831309 100644 --- a/Assets/Scripts/Player/SettingValue.cs +++ b/Assets/Scripts/Player/SettingValue.cs @@ -25,7 +25,7 @@ public class SettingValue : IResettableSettingValue{ set => targetValue = value; } [HorizontalGroup("Settings"), VerticalGroup("Settings/Smoothing"), BoxGroup("Settings/Smoothing/Smoothing"), LabelText("Current"), ShowIf("@IsSmoothable()")] - private float currentSmoothing; + public float currentSmoothing; [HorizontalGroup("Settings"), VerticalGroup("Settings/Value"), BoxGroup("Settings/Value/Value"), LabelText("Default")] public T defaultValue; [HorizontalGroup("Settings"), VerticalGroup("Settings/Smoothing"), BoxGroup("Settings/Smoothing/Smoothing"), LabelText("Default"), ShowIf("@IsSmoothable()")] @@ -75,31 +75,33 @@ public class SettingValue : IResettableSettingValue{ Debug.LogWarning($"A SettingValue ({this}) wasn't verified before being smoothed and eased. What's up with that?"); } - currentSmoothing = Mathf.MoveTowards(currentSmoothing, targetSmoothing, targetEasing * 1f * Time.deltaTime); + currentSmoothing = Mathf.MoveTowards(currentSmoothing, targetSmoothing, targetEasing * targetEasing * Time.deltaTime); if (typeof(T) == typeof(float)) { - currentValue = (T)(object)Mathf.SmoothDamp((float)(object)currentValue, (float)(object)targetValue, ref refVelFloat, currentSmoothing * Time.deltaTime); + currentValue = (T)(object)Mathf.SmoothDamp((float)(object)currentValue, (float)(object)targetValue, ref refVelFloat, currentSmoothing * currentSmoothing * Time.deltaTime); } if (typeof(T) == typeof(Vector2)) { - currentValue = (T)(object)Vector2.SmoothDamp((Vector2)(object)currentValue, (Vector2)(object)targetValue, ref refVelV2, currentSmoothing * Time.deltaTime); + currentValue = (T)(object)Vector2.SmoothDamp((Vector2)(object)currentValue, (Vector2)(object)targetValue, ref refVelV2, currentSmoothing * currentSmoothing * Time.deltaTime); } if (typeof(T) == typeof(Vector3)) { - currentValue = (T)(object)Vector3.SmoothDamp((Vector3)(object)currentValue, (Vector3)(object)targetValue, ref refVelV3, currentSmoothing * Time.deltaTime); + currentValue = (T)(object)Vector3.SmoothDamp((Vector3)(object)currentValue, (Vector3)(object)targetValue, ref refVelV3, currentSmoothing * currentSmoothing * Time.deltaTime); } if (typeof(T) == typeof(Vector4) || typeof(T) == typeof(Quaternion)) { // I have... zero clue if this will work. There is no Vector4 or Quaternion SmoothDamp - Vector3 v3value = Vector3.SmoothDamp((Vector4)(object)currentValue, (Vector4)(object)targetValue, ref refVelV3, currentSmoothing * Time.deltaTime); - float v4value = Mathf.SmoothDamp(((Vector4)(object)currentValue).z, ((Vector4)(object)targetValue).z, ref refVelFloat, currentSmoothing * Time.deltaTime); + Vector3 v3value = Vector3.SmoothDamp((Vector4)(object)currentValue, (Vector4)(object)targetValue, ref refVelV3, currentSmoothing * currentSmoothing * Time.deltaTime); + float v4value = Mathf.SmoothDamp(((Vector4)(object)currentValue).z, ((Vector4)(object)targetValue).z, ref refVelFloat, currentSmoothing * currentSmoothing * Time.deltaTime); currentValue = (T)(object)new Vector4(v3value.x, v3value.y, v3value.z, v4value); } } - + public void Initialize(){ currentValue = targetValue; - Debug.Log(Value); + defaultValue = targetValue; + defaultSmoothing = targetSmoothing; + defaultEasing = targetEasing; } } \ No newline at end of file diff --git a/Assets/Scripts/Player/UnitMovementData.cs b/Assets/Scripts/Player/UnitMovementData.cs index 8e8c3a6..85c7d7e 100644 --- a/Assets/Scripts/Player/UnitMovementData.cs +++ b/Assets/Scripts/Player/UnitMovementData.cs @@ -6,17 +6,18 @@ using UnityEngine; namespace Reset.Units{ [Serializable] - public class UnitMovementData : ICloneable{ + public class UnitMovementData{ // Movement Direction - [Title("Move Smoothing"), HideLabel, InlineProperty] public SettingValue moveSmoothing = new SettingValue(new Vector2(.5f, .5f)); - [Title("Acceleration"), HideLabel, InlineProperty] public SettingValue acceleration = new SettingValue(5f); - [Title("Deacceleration"), HideLabel, InlineProperty] public SettingValue deacceleration = new SettingValue(5f); + [Title("Direction Changing Softeness"), HideLabel, InlineProperty] public SettingValue directionChangingSoftness = new SettingValue(1f, defaultSmoothing: 1f); + [Title("Direction Spinning Hardness"), HideLabel, InlineProperty] public SettingValue directionSpinningHardness = new SettingValue(3f, defaultSmoothing: 1f); + [Title("Directoon Spinning Speed"), HideLabel, InlineProperty] public SettingValue directionSpinningSpeed= new SettingValue(3f, defaultSmoothing: 1f); [SliderField(0,1)] [Title("Air Direction Decay"), HideLabel, InlineProperty] public SettingValue airDirectionDecay = new SettingValue(1f); // TODO: Check default value // Move Speed - [Title("Softening"), HideLabel, InlineProperty] public SettingValue softening = new SettingValue(1f, defaultSmoothing: 1f); + [Title("Acceleration"), HideLabel, InlineProperty] public SettingValue acceleration = new SettingValue(5f); + [Title("Deacceleration"), HideLabel, InlineProperty] public SettingValue deacceleration = new SettingValue(5f); [Title("Move Speed"), HideLabel, InlineProperty] public SettingValue moveSpeed = new SettingValue(15f, defaultSmoothing: 10f); // Jumping @@ -30,33 +31,27 @@ namespace Reset.Units{ [Title("Gravity Scale"), HideLabel, InlineProperty] public SettingValue gravityScale = new SettingValue(1f); // Rotation - [Title("Rotate Facing"), HideLabel, InlineProperty] public SettingValue rotateFacing = new SettingValue(initValue: PlayerFacingDirection.Momentum); + [Title("Rotate Facing"), HideLabel, InlineProperty] public SettingValue facingDirection = new SettingValue(initValue: PlayerFacingDirection.Momentum); [Title("Rotation Speed"), HideLabel, InlineProperty] public SettingValue rotationSpeed = new SettingValue(5f); - [Title("Rotation Input Blending"), HideLabel, InlineProperty] public SettingValue rotationInputBlending = new SettingValue(.3f); - public object Clone(){ - return MemberwiseClone(); - } public List GetAllSettings(){ var outputList = new List(); - IResettableSettingValue[] settings = new[]{ - moveSmoothing as IResettableSettingValue, + IResettableSettingValue[] settings = { + directionChangingSoftness, + directionSpinningHardness, + directionSpinningSpeed, acceleration, deacceleration, airDirectionDecay, - softening, moveSpeed, - // jumpPower, - // jumpPowerDecay, gravityPower, gravityMax, gravityAcceleration, gravityScale, - rotateFacing, + facingDirection, rotationSpeed, - rotationInputBlending, }; outputList.AddRange(settings); diff --git a/Assets/Scripts/Player/UnitMovementHandler.cs b/Assets/Scripts/Player/UnitMovementHandler.cs index 6076063..0692f03 100644 --- a/Assets/Scripts/Player/UnitMovementHandler.cs +++ b/Assets/Scripts/Player/UnitMovementHandler.cs @@ -8,13 +8,8 @@ namespace Reset.Units{ [ShowInInspector, InlineProperty, HideLabel, FoldoutGroup("Resolved Movement", expanded: true)] public ResolvedMovement resolvedMovement; - [HideInInspector] public Vector3 outputMoveDirection; - [HideInInspector] public Vector3 additionalMoveDirection; - // SmoothDamp Velocities - private Quaternion refVelocityRotationSpeed; - private float refVelocityAcceleration; - private float refVelocityDeacceleration; + private Vector2 refVelocityDirectionChangingHardness; // Smoothing Values private float directionChangeDotLerp; @@ -29,6 +24,9 @@ namespace Reset.Units{ // Movement Data [ShowInInspector, PropertyOrder(2), FoldoutGroup("Movement Data", expanded: true), InlineProperty, HideLabel] public UnitMovementData data = new(); + // Other + private Quaternion specifiedRotation; // Used for locking a specific direction + void Awake(){ controller = GetComponent(); controls = GetComponent(); @@ -45,13 +43,14 @@ namespace Reset.Units{ void Update(){ SmoothAllSettings(); - + UpdateCurrentDirection(); UpdateCurrentGravity(); UpdateCurrentSpeed(); UpdateCurrentRotation(); - DoMovement(); + // Apply movement + DoMovement(resolvedMovement.moveDirection.World, resolvedMovement.gravity, resolvedMovement.moveSpeed, data.gravityScale.Value); DebugOverlayDrawer.ChangeValue("Movement", "Move Direction (Local)", resolvedMovement.moveDirection.Local); DebugOverlayDrawer.ChangeValue("Movement", "Move Direction (World)", resolvedMovement.moveDirection.World); @@ -62,6 +61,7 @@ namespace Reset.Units{ // Get input value Vector2 targetDirection = new Vector2(controls.rawMoveInput.x, controls.rawMoveInput.y); + // Rotate input by camera rotation (instead of rotating the output direction by camera rotation) targetDirection = (Camera.main.transform.rotation * targetDirection.ToVector3()).ToVector2(); // Deadzone @@ -69,7 +69,7 @@ namespace Reset.Units{ targetDirection = Vector2.zero; } - // Set Raw Direciton + // Set Raw Direction (this is used by the camera later) resolvedMovement.moveDirection.RawWorld = targetDirection; // Get current direction @@ -79,7 +79,7 @@ namespace Reset.Units{ float switchedDirection = Vector3.Dot(targetDirection, currentDirection); float switchedDirectionRemapped = Mathf.Lerp(0, 1, switchedDirection); - directionChangeDotLerp = Mathf.Lerp(switchedDirection, switchedDirectionRemapped, 5f * Time.deltaTime) ; // turn that .5f into a variable + directionChangeDotLerp = Mathf.Lerp(switchedDirection, switchedDirectionRemapped, data.directionSpinningHardness.Value * Time.deltaTime); DebugOverlayDrawer.ChangeValue("Movement", "Direction Change Dot", directionChangeDotLerp); // Smooth movement. Use deaccel smoothing if the input magnitude is lower, and accel smoothing if it's higher @@ -89,12 +89,12 @@ namespace Reset.Units{ Vector2 newDirection; if (controller.isGrounded){ - slerpedValue = Vector3.Slerp(currentDirection, targetDirection, data.softening.Value * Time.deltaTime); - lerpedValue = Vector2.Lerp(currentDirection, targetDirection, data.softening.Value * Time.deltaTime); + slerpedValue = Vector3.Slerp(currentDirection, targetDirection, data.directionSpinningSpeed.Value * Time.deltaTime); + lerpedValue = Vector2.SmoothDamp(currentDirection, targetDirection, ref refVelocityDirectionChangingHardness, data.directionChangingSoftness.Value * Time.deltaTime); newDirection = Vector2.Lerp(slerpedValue, lerpedValue, directionChangeDotLerp); } else { - newDirection = Vector2.Lerp(currentDirection, targetDirection, data.softening.Value * data.airDirectionDecay.Value * Time.deltaTime); + newDirection = Vector2.SmoothDamp(currentDirection, targetDirection, ref refVelocityDirectionChangingHardness, data.directionChangingSoftness.Value * data.airDirectionDecay.Value * Time.deltaTime); } // Commit the new direction @@ -119,6 +119,7 @@ namespace Reset.Units{ } // Update the gravity, called every frame + // NOTE: most gravity interactions, like when grounded or not, is now handled by the state machine private void UpdateCurrentGravity(){ // Accelerate gravity if (!controller.isGrounded){ @@ -136,10 +137,16 @@ namespace Reset.Units{ Quaternion targetRotation = Quaternion.identity; // Switch the desired rotation based on current movement setting - switch (data.rotateFacing.Value) { // TODO: Check that this isn't broken + switch (data.facingDirection.Value) { // Just look at target case PlayerFacingDirection.TowardsTarget: // Look directly at the target + if (lockOnManager.mainTarget == null) { + Debug.LogError("Trying to rotate towards a target but there is no target. Not setting a rotation"); + targetRotation = transform.rotation; + break; + } + targetRotation = Quaternion.LookRotation(transform.position.DirectionTo(lockOnManager.mainTarget.gameObject.transform.position)); break; case PlayerFacingDirection.Momentum: @@ -148,8 +155,8 @@ namespace Reset.Units{ targetRotation = Quaternion.LookRotation(resolvedMovement.moveDirection.RawWorld.ToVector3(), Vector3.up); } break; - case PlayerFacingDirection.MatchForward: - // Look towards the input direction....why??? I guess cause move direction is PlayerFacingDirection.Momentum. + case PlayerFacingDirection.MatchInput: + // Look towards the input direction- similar to Momentum but snappier if (controls.rawMoveInput.magnitude < 0.05f) { break; } targetRotation = Camera.main.transform.rotation * Quaternion.LookRotation(inputMovement); @@ -160,7 +167,7 @@ namespace Reset.Units{ break; case PlayerFacingDirection.Static: // Don't change - targetRotation = transform.rotation; + targetRotation = resolvedMovement.rotation; break; } @@ -168,27 +175,21 @@ namespace Reset.Units{ // Add the current input into the created rotation if (inputMovement.magnitude > .05) { - // Quaternion inputRot = Camera.main.transform.rotation * Quaternion.LookRotation(inputMovement); - // resolvedMovement.rotation = Quaternion.RotateTowards(resolvedMovement.rotation, targetRotation, 10f); + resolvedMovement.rotation = targetRotation; + } else if (data.facingDirection.Value == PlayerFacingDirection.MatchCamera) { resolvedMovement.rotation = targetRotation; } - // Set final rotation + // Apply rotation to the character transform.rotation = Quaternion.Slerp(transform.rotation, resolvedMovement.rotation, data.rotationSpeed.Value * Time.deltaTime).Flatten(0, null, 0); } - // Move with default settings - public void DoMovement(){ - DoMovement(resolvedMovement.moveDirection.World, resolvedMovement.moveSpeed, data.gravityScale.Value); // TODO: Gets multiplied a second time in DoMovement by gravity scale???? - } - - // Custom move from input - public void DoMovement(Vector2 moveDir, float speed, float gravityScale){ - // Debug.Log($"moveDir: {moveDir}, agent velocity: {transform.InverseTransformDirection(controller.velocity.normalized)}"); + // Custom move from input + private void DoMovement(Vector2 moveDir, float gravDir, float speed, float gravityScale){ // Seperate the different move directions. Additonal becomes it's own because it needs to be added independently of the other two Vector2 moveXZDir = moveDir; - float moveYDir = resolvedMovement.gravity; + float moveYDir = gravDir; // Add their related speeds moveXZDir *= speed * Time.deltaTime; @@ -209,7 +210,7 @@ namespace Reset.Units{ } } - public void SetNewDirection(Vector2 value, float relativity, bool absolute){ // new + public void SetNewDirection(Vector2 value, float relativity, bool absolute, Vector2 relativeTo = default){ // new if (absolute){ resolvedMovement.moveDirection.World = Vector2.Lerp(resolvedMovement.moveDirection.World, value, relativity); } else { @@ -217,7 +218,7 @@ namespace Reset.Units{ } } - public void SetNewRawDirection(Vector2 value, float relativity, bool absolute){ // new + public void SetNewRawDirection(Vector2 value, float relativity, bool absolute, Vector2 relativeTo = default){ // new if (absolute){ resolvedMovement.moveDirection.RawWorld = Vector2.Lerp(resolvedMovement.moveDirection.RawWorld, value, relativity); } else { @@ -225,7 +226,7 @@ namespace Reset.Units{ } } - public void SetNewSpeed(float value, float relativity, bool absolute){ // new + public void SetNewSpeed(float value, float relativity, bool absolute, float relativeTo = Mathf.Infinity){ // new if (absolute){ resolvedMovement.moveSpeed = Mathf.Lerp(resolvedMovement.moveSpeed, value, relativity); } else { @@ -233,7 +234,7 @@ namespace Reset.Units{ } } - public void SetNewRotation(Quaternion value, float relativity, bool absolute){ // new + public void SetNewRotation(Quaternion value, float relativity, bool absolute, Quaternion relativeTo = default){ // new if (absolute){ resolvedMovement.rotation = Quaternion.Lerp(resolvedMovement.rotation, value, relativity); } else { @@ -241,6 +242,10 @@ namespace Reset.Units{ } } + public void SetSpecifiedRotation(Quaternion inputRotation){ + specifiedRotation = inputRotation; + } + [Button("Initialize Settings", ButtonHeight = 30), PropertySpace(10,5 )] void InitAllSettings(){ var settingsList = data.GetAllSettings(); @@ -274,14 +279,11 @@ namespace Reset.Units{ public void SetNewGravity(float value){ Debug.LogError("Using an old movement command! Switch to one of the new alternatives!"); } - - public void SetSpecifiedRotation(Quaternion inputRotation){ // Old - Debug.LogError("Using an old movement command! Switch to one of the new alternatives!"); - } - + public void OverwriteDirectionFromInput(Vector2 value, float priority, float speed = Mathf.Infinity){ // Old Debug.LogError("Using an old movement command! Switch to one of the new alternatives!"); } + } }