From 8986a351e7810398af3ac73ebb96d1f7865f0f81 Mon Sep 17 00:00:00 2001 From: Dom Harris Date: Mon, 4 Jan 2021 16:49:48 +0000 Subject: [PATCH] first pass player movement --- Assets/Input/CrosshairSpeed.asset | 16 + Assets/Input/CrosshairSpeed.asset.meta | 8 + Assets/Input/PlayerInput.cs | 4 +- Assets/Input/PlayerInput.inputactions | 4 +- Assets/Input/PlayerSpeed.asset | 16 + Assets/Input/PlayerSpeed.asset.meta | 8 + Assets/Player.meta | 8 + Assets/Player/LookAtUIObject.cs | 25 + Assets/Player/LookAtUIObject.cs.meta | 11 + Assets/Player/MoveCrosshair.cs | 66 ++ Assets/Player/MoveCrosshair.cs.meta | 11 + Assets/Player/MovePlayer.cs | 54 ++ Assets/Player/MovePlayer.cs.meta | 11 + Assets/Scenes/Chief's Sandbox.unity | 693 +++++++++++++++++--- Assets/Utils.meta | 8 + Assets/Utils/Editor.meta | 8 + Assets/Utils/Editor/SerialVarEditor.cs | 24 + Assets/Utils/Editor/SerialVarEditor.cs.meta | 3 + Assets/Utils/SerialFloat.cs | 10 + Assets/Utils/SerialFloat.cs.meta | 3 + Assets/Utils/SerialVar.cs | 48 ++ Assets/Utils/SerialVar.cs.meta | 11 + lucidity.sln.DotSettings | 2 + 23 files changed, 972 insertions(+), 80 deletions(-) create mode 100644 Assets/Input/CrosshairSpeed.asset create mode 100644 Assets/Input/CrosshairSpeed.asset.meta create mode 100644 Assets/Input/PlayerSpeed.asset create mode 100644 Assets/Input/PlayerSpeed.asset.meta create mode 100644 Assets/Player.meta create mode 100644 Assets/Player/LookAtUIObject.cs create mode 100644 Assets/Player/LookAtUIObject.cs.meta create mode 100644 Assets/Player/MoveCrosshair.cs create mode 100644 Assets/Player/MoveCrosshair.cs.meta create mode 100644 Assets/Player/MovePlayer.cs create mode 100644 Assets/Player/MovePlayer.cs.meta create mode 100644 Assets/Utils.meta create mode 100644 Assets/Utils/Editor.meta create mode 100644 Assets/Utils/Editor/SerialVarEditor.cs create mode 100644 Assets/Utils/Editor/SerialVarEditor.cs.meta create mode 100644 Assets/Utils/SerialFloat.cs create mode 100644 Assets/Utils/SerialFloat.cs.meta create mode 100644 Assets/Utils/SerialVar.cs create mode 100644 Assets/Utils/SerialVar.cs.meta create mode 100644 lucidity.sln.DotSettings diff --git a/Assets/Input/CrosshairSpeed.asset b/Assets/Input/CrosshairSpeed.asset new file mode 100644 index 0000000..822b9df --- /dev/null +++ b/Assets/Input/CrosshairSpeed.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d86361ffc5ae478d9e976629c5d651bd, type: 3} + m_Name: CrosshairSpeed + m_EditorClassIdentifier: + _initialValue: 1500 + _readOnly: 0 diff --git a/Assets/Input/CrosshairSpeed.asset.meta b/Assets/Input/CrosshairSpeed.asset.meta new file mode 100644 index 0000000..d5071ae --- /dev/null +++ b/Assets/Input/CrosshairSpeed.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 417174c1875ee4a0dbc6f1739c00e93a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Input/PlayerInput.cs b/Assets/Input/PlayerInput.cs index 887fe8a..ab58915 100644 --- a/Assets/Input/PlayerInput.cs +++ b/Assets/Input/PlayerInput.cs @@ -22,7 +22,7 @@ namespace Input ""actions"": [ { ""name"": ""Move"", - ""type"": ""Value"", + ""type"": ""PassThrough"", ""id"": ""32cfb6a9-3009-425d-8f82-2dfa9698efaa"", ""expectedControlType"": ""Vector2"", ""processors"": """", @@ -30,7 +30,7 @@ namespace Input }, { ""name"": ""Aim"", - ""type"": ""Value"", + ""type"": ""PassThrough"", ""id"": ""9abef9b2-3340-47b6-b7af-a104b6d41be7"", ""expectedControlType"": ""Vector2"", ""processors"": """", diff --git a/Assets/Input/PlayerInput.inputactions b/Assets/Input/PlayerInput.inputactions index 0456ba1..da7dbd4 100644 --- a/Assets/Input/PlayerInput.inputactions +++ b/Assets/Input/PlayerInput.inputactions @@ -7,7 +7,7 @@ "actions": [ { "name": "Move", - "type": "Value", + "type": "PassThrough", "id": "32cfb6a9-3009-425d-8f82-2dfa9698efaa", "expectedControlType": "Vector2", "processors": "", @@ -15,7 +15,7 @@ }, { "name": "Aim", - "type": "Value", + "type": "PassThrough", "id": "9abef9b2-3340-47b6-b7af-a104b6d41be7", "expectedControlType": "Vector2", "processors": "", diff --git a/Assets/Input/PlayerSpeed.asset b/Assets/Input/PlayerSpeed.asset new file mode 100644 index 0000000..640bbfc --- /dev/null +++ b/Assets/Input/PlayerSpeed.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d86361ffc5ae478d9e976629c5d651bd, type: 3} + m_Name: PlayerSpeed + m_EditorClassIdentifier: + _initialValue: 12 + _readOnly: 0 diff --git a/Assets/Input/PlayerSpeed.asset.meta b/Assets/Input/PlayerSpeed.asset.meta new file mode 100644 index 0000000..dbbf3eb --- /dev/null +++ b/Assets/Input/PlayerSpeed.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 866d52dfca73e4880858f1da4ae6b2ef +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Player.meta b/Assets/Player.meta new file mode 100644 index 0000000..645a727 --- /dev/null +++ b/Assets/Player.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d40d61be90ae490eaaff56c45e68cda +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Player/LookAtUIObject.cs b/Assets/Player/LookAtUIObject.cs new file mode 100644 index 0000000..4aac87c --- /dev/null +++ b/Assets/Player/LookAtUIObject.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LookAtUIObject : MonoBehaviour +{ + [SerializeField] private Camera cam; + [SerializeField] private float distance = 20; + [SerializeField] private RectTransform lookAt; + + private Vector3 _pos; + + private void LateUpdate() + { + _pos = cam.ScreenToWorldPoint((Vector3)lookAt.position + Vector3.forward * distance); + transform.LookAt(_pos, cam.transform.up); + } + + private void OnDrawGizmos() + { + _pos = cam.ScreenToWorldPoint((Vector3)lookAt.position + Vector3.forward * distance); + Gizmos.DrawWireSphere(_pos, .5f); + } +} diff --git a/Assets/Player/LookAtUIObject.cs.meta b/Assets/Player/LookAtUIObject.cs.meta new file mode 100644 index 0000000..a3c39f0 --- /dev/null +++ b/Assets/Player/LookAtUIObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee402da2b1ce44634affa14c193a5d3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Player/MoveCrosshair.cs b/Assets/Player/MoveCrosshair.cs new file mode 100644 index 0000000..571f5b5 --- /dev/null +++ b/Assets/Player/MoveCrosshair.cs @@ -0,0 +1,66 @@ +using System; +using Ktyl.Util; +using UnityEngine; +using UnityEngine.InputSystem; +using UnityEngine.UI; +using PlayerInput = Input.PlayerInput; + +public class MoveCrosshair : MonoBehaviour +{ + [SerializeField] private SerialFloat speed; + [SerializeField] private RectOffset extents; + [SerializeField] private RectTransform canvas; + + private PlayerInput _input; + + private Vector2 _currentInput; + + private RectTransform _rt; + + private Rect _pos; + + private void Awake() + { + _rt = GetComponent(); + } + + private void OnEnable() + { + _input ??= new PlayerInput(); + + _input.Enable(); + _input.Default.Aim.performed += DoAim; + } + + private void OnDisable() + { + _input.Disable(); + _input.Default.Aim.performed -= DoAim; + } + + private void Update() + { + _rt.anchoredPosition += _currentInput * speed * Time.deltaTime; + _pos = extents.Remove(canvas.rect); + _pos.center += new Vector2(canvas.rect.width / 2f, canvas.rect.height / 2f); + _rt.anchoredPosition = new Vector3( + Mathf.Clamp(_rt.anchoredPosition.x, _pos.xMin, _pos.xMax), + Mathf.Clamp(_rt.anchoredPosition.y, _pos.yMin, _pos.yMax)); + } + + private void DoAim(InputAction.CallbackContext context) + { + var value = context.ReadValue(); + + switch (context.control.device) + { + case Gamepad _: + _currentInput = value; + break; + case Mouse _: + _currentInput =Vector2.zero; + transform.position = value; + break; + } + } +} diff --git a/Assets/Player/MoveCrosshair.cs.meta b/Assets/Player/MoveCrosshair.cs.meta new file mode 100644 index 0000000..bd393b9 --- /dev/null +++ b/Assets/Player/MoveCrosshair.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 434522008507440b2b2eee74cd306cc0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Player/MovePlayer.cs b/Assets/Player/MovePlayer.cs new file mode 100644 index 0000000..261719f --- /dev/null +++ b/Assets/Player/MovePlayer.cs @@ -0,0 +1,54 @@ +using System; +using Ktyl.Util; +using UnityEngine; +using UnityEngine.InputSystem; +using UnityEngine.UI; +using PlayerInput = Input.PlayerInput; + +public class MovePlayer : MonoBehaviour +{ + [SerializeField] private SerialFloat speed; + [SerializeField] private RectOffset extents; + + private PlayerInput _input; + + private Vector2 _currentInput; + + private Transform _transform; + + private Rect _pos; + + private void Awake() + { + _transform = transform; + } + + private void OnEnable() + { + _input ??= new PlayerInput(); + + _input.Enable(); + _input.Default.Move.performed += DoMove; + } + + private void OnDisable() + { + _input.Disable(); + _input.Default.Move.performed -= DoMove; + } + + private void Update() + { + _transform.localPosition += (Vector3) _currentInput * speed * Time.deltaTime; + _transform.localPosition = new Vector3( + Mathf.Clamp(_transform.localPosition.x, extents.left, extents.right), + Mathf.Clamp(_transform.localPosition.y, extents.bottom, extents.top), + _transform.localPosition.z); + } + + private void DoMove(InputAction.CallbackContext context) + { + var value = context.ReadValue(); + _currentInput = value; + } +} diff --git a/Assets/Player/MovePlayer.cs.meta b/Assets/Player/MovePlayer.cs.meta new file mode 100644 index 0000000..4373e2a --- /dev/null +++ b/Assets/Player/MovePlayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a45b6c6fc06e404da77f5caaf2a6f43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Chief's Sandbox.unity b/Assets/Scenes/Chief's Sandbox.unity index ed7fd86..e57711d 100644 --- a/Assets/Scenes/Chief's Sandbox.unity +++ b/Assets/Scenes/Chief's Sandbox.unity @@ -123,6 +123,412 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &660289115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 660289116} + - component: {fileID: 660289118} + - component: {fileID: 660289117} + - component: {fileID: 660289119} + m_Layer: 5 + m_Name: CrossHair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &660289116 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660289115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1942400137} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 960, y: 540} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &660289117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660289115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &660289118 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660289115} + m_CullTransparentMesh: 1 +--- !u!114 &660289119 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 660289115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434522008507440b2b2eee74cd306cc0, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: {fileID: 11400000, guid: 417174c1875ee4a0dbc6f1739c00e93a, type: 2} + extents: + m_Left: 200 + m_Right: 200 + m_Top: 200 + m_Bottom: 200 + canvas: {fileID: 1942400137} +--- !u!1 &763784687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 763784690} + - component: {fileID: 763784689} + - component: {fileID: 763784688} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &763784688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763784687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: 1054132383583890850, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: 3710738434707379630, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 2064916234097673511, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: -1967631576421560919, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 8056856818456041789, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: 3279352641294131588, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: 3837173908680883260, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 4502412055082496612, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 4754684134866288074, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 1025543830046995696, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 +--- !u!114 &763784689 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763784687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &763784690 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 763784687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &831508165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 831508166} + - component: {fileID: 831508167} + m_Layer: 0 + m_Name: DollyCart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &831508166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831508165} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1421772845} + - {fileID: 1173812008} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &831508167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 831508165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 99a9c787e5d1bbf48a389834c4a9641c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Path: {fileID: 1138962391} + m_UpdateMethod: 0 + m_PositionUnits: 1 + m_Speed: 2 + m_Position: 0 +--- !u!1 &1138962389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1138962390} + - component: {fileID: 1138962391} + m_Layer: 0 + m_Name: Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1138962390 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138962389} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1138962391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138962389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d37e5385efd7064cb1d54c94960acae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Resolution: 30 + m_Appearance: + pathColor: {r: 0, g: 1, b: 0, a: 1} + inactivePathColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + width: 0.2 + m_Looped: 0 + m_Waypoints: + - position: {x: 0, y: 0, z: 0} + tangent: {x: 0, y: 0, z: 1} + roll: 0 + - position: {x: 0, y: 0, z: 7.462495} + tangent: {x: 0, y: 1.2831616, z: 1} + roll: 0 +--- !u!1 &1173812004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1173812008} + - component: {fileID: 1173812007} + - component: {fileID: 1173812006} + - component: {fileID: 1173812005} + - component: {fileID: 1173812009} + - component: {fileID: 1173812010} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1173812005 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1173812006 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1173812007 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1173812008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1639649351} + m_Father: {fileID: 831508166} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1173812009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a45b6c6fc06e404da77f5caaf2a6f43, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: {fileID: 11400000, guid: 866d52dfca73e4880858f1da4ae6b2ef, type: 2} + extents: + m_Left: -6 + m_Right: 6 + m_Top: 4 + m_Bottom: -4 +--- !u!114 &1173812010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173812004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee402da2b1ce44634affa14c193a5d3b, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 1421772844} + distance: 30 + lookAt: {fileID: 660289116} --- !u!1 &1421772842 GameObject: m_ObjectHideFlags: 0 @@ -134,6 +540,7 @@ GameObject: - component: {fileID: 1421772845} - component: {fileID: 1421772844} - component: {fileID: 1421772843} + - component: {fileID: 1421772847} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -199,14 +606,46 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1421772842} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 831508166} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1696816581 +--- !u!114 &1421772847 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421772842} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!1 &1639649350 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -214,88 +653,190 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1696816583} - - component: {fileID: 1696816582} + - component: {fileID: 1639649351} + - component: {fileID: 1639649354} + - component: {fileID: 1639649353} + - component: {fileID: 1639649352} m_Layer: 0 - m_Name: Directional Light + m_Name: Cube m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1696816582 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696816581} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1696816583 +--- !u!4 &1639649351 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696816581} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1639649350} + m_LocalRotation: {x: 0, y: 0.38268343, z: 0, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0.45} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} m_Children: [] + m_Father: {fileID: 1173812008} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0} +--- !u!65 &1639649352 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639649350} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1639649353 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639649350} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1639649354 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639649350} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1942400133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1942400137} + - component: {fileID: 1942400136} + - component: {fileID: 1942400135} + - component: {fileID: 1942400134} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1942400134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942400133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1942400135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942400133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1942400136 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942400133} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1942400137 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1942400133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 660289116} m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} diff --git a/Assets/Utils.meta b/Assets/Utils.meta new file mode 100644 index 0000000..eea4b27 --- /dev/null +++ b/Assets/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08e1f3513bff04735a516fd335a87111 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Utils/Editor.meta b/Assets/Utils/Editor.meta new file mode 100644 index 0000000..a2911f7 --- /dev/null +++ b/Assets/Utils/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 04dee93c065454e4682601a0eb1534ec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Utils/Editor/SerialVarEditor.cs b/Assets/Utils/Editor/SerialVarEditor.cs new file mode 100644 index 0000000..0b1788a --- /dev/null +++ b/Assets/Utils/Editor/SerialVarEditor.cs @@ -0,0 +1,24 @@ +using UnityEditor; + +namespace Ktyl.Util +{ + public abstract class SerialVarEditor : Editor + { + private SerialVar _t; + + protected virtual void OnEnable() + { + _t = target as SerialVar; + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.LabelField("Current Value", _t.Value.ToString()); + EditorGUI.EndDisabledGroup(); + } + } + +} \ No newline at end of file diff --git a/Assets/Utils/Editor/SerialVarEditor.cs.meta b/Assets/Utils/Editor/SerialVarEditor.cs.meta new file mode 100644 index 0000000..a010e24 --- /dev/null +++ b/Assets/Utils/Editor/SerialVarEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 64e2408d1b0741588a1a1611e483acf5 +timeCreated: 1609774075 \ No newline at end of file diff --git a/Assets/Utils/SerialFloat.cs b/Assets/Utils/SerialFloat.cs new file mode 100644 index 0000000..ed16516 --- /dev/null +++ b/Assets/Utils/SerialFloat.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Ktyl.Util +{ + [CreateAssetMenu(menuName = "Create SerialFloat", fileName = "SerialFloat")] + public class SerialFloat : SerialVar + { + + } +} \ No newline at end of file diff --git a/Assets/Utils/SerialFloat.cs.meta b/Assets/Utils/SerialFloat.cs.meta new file mode 100644 index 0000000..b27bd3c --- /dev/null +++ b/Assets/Utils/SerialFloat.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d86361ffc5ae478d9e976629c5d651bd +timeCreated: 1609774206 \ No newline at end of file diff --git a/Assets/Utils/SerialVar.cs b/Assets/Utils/SerialVar.cs new file mode 100644 index 0000000..17e0d60 --- /dev/null +++ b/Assets/Utils/SerialVar.cs @@ -0,0 +1,48 @@ +using UnityEngine; + +namespace Ktyl.Util +{ + public abstract partial class SerialVar : ScriptableObject + { + public T Value + { + get => Application.isPlaying ? _value : _initialValue; + set + { + if (_readOnly) + { + Debug.LogError("tried to write to read only variable", this); + return; + } + + _value = value; + } + } + private T _value; + + [SerializeField] private T _initialValue; + [SerializeField] private bool _readOnly; + + public static implicit operator T(SerialVar t) => t.Value; + + private void OnValidate() + { + _value = _initialValue; + } + + private void OnEnable() + { + _value = _initialValue; + } + + public override string ToString() => Value.ToString(); + + #if UNITY_EDITOR + public T EDITOR_InitialValue + { + get => _initialValue; + set => _initialValue = value; + } + #endif + } +} \ No newline at end of file diff --git a/Assets/Utils/SerialVar.cs.meta b/Assets/Utils/SerialVar.cs.meta new file mode 100644 index 0000000..cf3a9c5 --- /dev/null +++ b/Assets/Utils/SerialVar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8ded1dec26344496bf00cf03504b433 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lucidity.sln.DotSettings b/lucidity.sln.DotSettings new file mode 100644 index 0000000..cdd78e9 --- /dev/null +++ b/lucidity.sln.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file