diff --git a/Projects/MyGame/Library/CurrentLayout-default.dwlt b/Projects/MyGame/Library/CurrentLayout-default.dwlt index 13f2dd43..d2236c8b 100644 --- a/Projects/MyGame/Library/CurrentLayout-default.dwlt +++ b/Projects/MyGame/Library/CurrentLayout-default.dwlt @@ -20,61 +20,10 @@ MonoBehaviour: height: 984 m_ShowMode: 4 m_Title: - m_RootView: {fileID: 9} - m_MinSize: {x: 950, y: 300} + m_RootView: {fileID: 7} + m_MinSize: {x: 950, y: 344} m_MaxSize: {x: 10000, y: 10000} --- !u!114 &2 -MonoBehaviour: - m_ObjectHideFlags: 52 - 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: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 439 - y: 0 - width: 759 - height: 647 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 19} - m_Panes: - - {fileID: 19} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &3 -MonoBehaviour: - m_ObjectHideFlags: 52 - 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: 12010, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 13} - - {fileID: 2} - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 1198 - height: 647 - m_MinSize: {x: 406, y: 222} - m_MaxSize: {x: 8006, y: 4022} - vertical: 0 - controlID: 102 ---- !u!114 &4 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -95,12 +44,12 @@ MonoBehaviour: height: 311 m_MinSize: {x: 204, y: 222} m_MaxSize: {x: 4004, y: 4022} - m_ActualView: {fileID: 17} + m_ActualView: {fileID: 15} m_Panes: - - {fileID: 17} + - {fileID: 15} m_Selected: 0 m_LastSelected: 0 ---- !u!114 &5 +--- !u!114 &3 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -113,8 +62,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 7} - - {fileID: 4} + - {fileID: 5} + - {fileID: 2} m_Position: serializedVersion: 2 x: 1198 @@ -124,8 +73,8 @@ MonoBehaviour: m_MinSize: {x: 279, y: 294} m_MaxSize: {x: 4004, y: 8044} vertical: 1 - controlID: 95 ---- !u!114 &6 + controlID: 113 +--- !u!114 &4 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -138,19 +87,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 12} - - {fileID: 5} + - {fileID: 10} + - {fileID: 3} m_Position: serializedVersion: 2 x: 0 y: 30 width: 1707 height: 934 - m_MinSize: {x: 685, y: 344} - m_MaxSize: {x: 12010, y: 8044} + m_MinSize: {x: 681, y: 294} + m_MaxSize: {x: 8006, y: 8044} vertical: 0 - controlID: 100 ---- !u!114 &7 + controlID: 112 +--- !u!114 &5 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -171,12 +120,12 @@ MonoBehaviour: height: 623 m_MinSize: {x: 279, y: 72} m_MaxSize: {x: 4004, y: 4022} - m_ActualView: {fileID: 16} + m_ActualView: {fileID: 14} m_Panes: - - {fileID: 16} + - {fileID: 14} m_Selected: 0 m_LastSelected: 0 ---- !u!114 &8 +--- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -195,15 +144,15 @@ MonoBehaviour: y: 647 width: 1198 height: 287 - m_MinSize: {x: 100, y: 100} - m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 20} + m_MinSize: {x: 102, y: 122} + m_MaxSize: {x: 4002, y: 4022} + m_ActualView: {fileID: 18} m_Panes: - - {fileID: 15} - - {fileID: 20} + - {fileID: 13} + - {fileID: 18} m_Selected: 1 m_LastSelected: 0 ---- !u!114 &9 +--- !u!114 &7 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -216,18 +165,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 10} - - {fileID: 6} - - {fileID: 11} + - {fileID: 8} + - {fileID: 4} + - {fileID: 9} m_Position: serializedVersion: 2 x: 0 y: 0 width: 1707 height: 984 - m_MinSize: {x: 950, y: 300} + m_MinSize: {x: 950, y: 344} m_MaxSize: {x: 10000, y: 10000} ---- !u!114 &10 +--- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -249,7 +198,7 @@ MonoBehaviour: m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} m_LastLoadedLayoutName: ---- !u!114 &11 +--- !u!114 &9 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -270,7 +219,7 @@ MonoBehaviour: height: 20 m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} ---- !u!114 &12 +--- !u!114 &10 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -283,19 +232,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Children: - - {fileID: 3} - - {fileID: 8} + - {fileID: 11} + - {fileID: 6} m_Position: serializedVersion: 2 x: 0 y: 0 width: 1198 height: 934 - m_MinSize: {x: 406, y: 344} - m_MaxSize: {x: 8006, y: 8044} + m_MinSize: {x: 402, y: 244} + m_MaxSize: {x: 4002, y: 6092} vertical: 1 - controlID: 101 ---- !u!114 &13 + controlID: 31 +--- !u!114 &11 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -312,17 +261,18 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 439 + width: 1198 height: 647 - m_MinSize: {x: 202, y: 222} - m_MaxSize: {x: 4002, y: 4022} - m_ActualView: {fileID: 18} + m_MinSize: {x: 402, y: 122} + m_MaxSize: {x: 2050, y: 2070} + m_ActualView: {fileID: 12} m_Panes: - - {fileID: 18} - - {fileID: 14} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &14 + - {fileID: 16} + - {fileID: 12} + - {fileID: 17} + m_Selected: 1 + m_LastSelected: 2 +--- !u!114 &12 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -345,10 +295,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 72.66667 - width: 1361 + width: 1198 height: 628 m_ViewDataDictionary: {fileID: 0} ---- !u!114 &15 +--- !u!114 &13 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -400,7 +350,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: 582f0000 m_LastClickedID: 12120 - m_ExpandedIDs: 000000006e2e000000ca9a3b + m_ExpandedIDs: 00000000682e0000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -428,7 +378,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 000000006e2e0000 + m_ExpandedIDs: 00000000682e0000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -472,7 +422,7 @@ MonoBehaviour: m_IsRenaming: 0 m_OriginalEventType: 11 m_IsRenamingFilename: 1 - m_ClientGUIView: {fileID: 8} + m_ClientGUIView: {fileID: 6} m_CreateAssetUtility: m_EndAction: {fileID: 0} m_InstanceID: 0 @@ -484,7 +434,7 @@ MonoBehaviour: m_GridSize: 64 m_SkipHiddenPackages: 0 m_DirectoriesAreaWidth: 222 ---- !u!114 &16 +--- !u!114 &14 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -522,7 +472,7 @@ MonoBehaviour: m_PreviewWindow: {fileID: 0} m_LastInspectedObjectInstanceID: -1 m_LastVerticalScrollValue: 1489 ---- !u!114 &17 +--- !u!114 &15 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -543,17 +493,17 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 1198 - y: 696 - width: 507 - height: 292 + x: 2 + y: 643 + width: 505 + height: 289 m_ViewDataDictionary: {fileID: 0} m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: 36350000 - m_LastClickedID: 13622 - m_ExpandedIDs: 72fbffff + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 76fbffff m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -577,7 +527,7 @@ MonoBehaviour: m_IsLocked: 0 m_CurrentSortingName: TransformSorting m_WindowGUID: 04d64de681738d141afcd44bebed1917 ---- !u!114 &18 +--- !u!114 &16 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -646,7 +596,7 @@ MonoBehaviour: m_Rotation: m_Target: {x: 0.7113088, y: -0.006325583, z: 0.0064019514, w: 0.70282376} speed: 2 - m_Value: {x: 0.71130794, y: -0.0063255755, z: 0.006401944, w: 0.7028229} + m_Value: {x: -0.7113088, y: 0.0063255825, z: -0.0064019514, w: -0.70282376} m_Size: m_Target: 37.457443 speed: 2 @@ -676,7 +626,7 @@ MonoBehaviour: m_SceneVisActive: 1 m_LastLockedObject: {fileID: 0} m_ViewIsLockedToObject: 0 ---- !u!114 &19 +--- !u!114 &17 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -697,9 +647,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 439.33334 + x: 0 y: 72.66667 - width: 757 + width: 1198 height: 628 m_ViewDataDictionary: {fileID: 0} m_VSyncEnabled: 0 @@ -713,8 +663,8 @@ MonoBehaviour: m_VRangeLocked: 0 hZoomLockedByDefault: 0 vZoomLockedByDefault: 0 - m_HBaseRangeMin: -378.5 - m_HBaseRangeMax: 378.5 + m_HBaseRangeMin: -599 + m_HBaseRangeMax: 599 m_VBaseRangeMin: -305.5 m_VBaseRangeMax: 305.5 m_HAllowExceedBaseRangeMin: 1 @@ -734,30 +684,30 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 17 - width: 757 + width: 1198 height: 611 m_Scale: {x: 1, y: 1} - m_Translation: {x: 378.5, y: 305.5} + m_Translation: {x: 599, y: 305.5} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -378.5 + x: -599 y: -305.5 - width: 757 + width: 1198 height: 611 m_MinimalGUI: 1 m_defaultScale: 1 m_TargetTexture: {fileID: 0} m_CurrentColorSpace: 0 - m_LastWindowPixelSize: {x: 1135.5, y: 942} + m_LastWindowPixelSize: {x: 1797, y: 942} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 00000000000000000000 m_XRRenderMode: 0 ---- !u!114 &20 +--- !u!114 &18 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -779,7 +729,7 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 720 - width: 1198 - height: 268 + y: 667 + width: 1196 + height: 265 m_ViewDataDictionary: {fileID: 0} diff --git a/Projects/MyGame/Library/EditorOnlyScriptingUserSettings.json b/Projects/MyGame/Library/EditorOnlyScriptingUserSettings.json index 2a74fbb4..f08c9531 100644 --- a/Projects/MyGame/Library/EditorOnlyScriptingUserSettings.json +++ b/Projects/MyGame/Library/EditorOnlyScriptingUserSettings.json @@ -1 +1 @@ -{"m_ScriptingRuntimeVersion":1,"m_DefineSymbols":[{"first":1,"second":"_FPAIO"},{"first":7,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":13,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":19,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":21,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":25,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":26,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":27,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":28,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":29,"second":"UNITY_POST_PROCESSING_STACK_V2"}],"m_AllowUnsafeCode":false} \ No newline at end of file +{"m_ScriptingRuntimeVersion":1,"m_DefineSymbols":[{"first":1,"second":"_FPAIO;UNITY_POST_PROCESSING_STACK_V2"},{"first":7,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":13,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":19,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":21,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":25,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":26,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":27,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":28,"second":"UNITY_POST_PROCESSING_STACK_V2"},{"first":29,"second":"UNITY_POST_PROCESSING_STACK_V2"}],"m_AllowUnsafeCode":false} \ No newline at end of file diff --git a/Projects/MyGame/Library/ProjectSettings.asset b/Projects/MyGame/Library/ProjectSettings.asset index efc0f186..3526f543 100644 --- a/Projects/MyGame/Library/ProjectSettings.asset +++ b/Projects/MyGame/Library/ProjectSettings.asset @@ -553,7 +553,7 @@ PlayerSettings: webGLThreadsSupport: 0 webGLWasmStreaming: 0 scriptingDefineSymbols: - 1: _FPAIO + 1: _FPAIO;UNITY_POST_PROCESSING_STACK_V2 7: UNITY_POST_PROCESSING_STACK_V2 13: UNITY_POST_PROCESSING_STACK_V2 19: UNITY_POST_PROCESSING_STACK_V2 diff --git a/Projects/MyGame/Library/assetDatabase3 b/Projects/MyGame/Library/assetDatabase3 index 00816b00..f847c6f8 100644 Binary files a/Projects/MyGame/Library/assetDatabase3 and b/Projects/MyGame/Library/assetDatabase3 differ diff --git a/Projects/MyGame/ProjectSettings/ProjectSettings.asset b/Projects/MyGame/ProjectSettings/ProjectSettings.asset index efc0f186..3526f543 100644 --- a/Projects/MyGame/ProjectSettings/ProjectSettings.asset +++ b/Projects/MyGame/ProjectSettings/ProjectSettings.asset @@ -553,7 +553,7 @@ PlayerSettings: webGLThreadsSupport: 0 webGLWasmStreaming: 0 scriptingDefineSymbols: - 1: _FPAIO + 1: _FPAIO;UNITY_POST_PROCESSING_STACK_V2 7: UNITY_POST_PROCESSING_STACK_V2 13: UNITY_POST_PROCESSING_STACK_V2 19: UNITY_POST_PROCESSING_STACK_V2 diff --git a/Projects/SteamVR/Assets/Scenes.meta b/Projects/SteamVR/Assets/Scenes.meta new file mode 100644 index 00000000..6240fb7d --- /dev/null +++ b/Projects/SteamVR/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35a178194da74564cb401aea925d5779 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/Scenes/SampleScene.unity b/Projects/SteamVR/Assets/Scenes/SampleScene.unity new file mode 100644 index 00000000..a7a0c417 --- /dev/null +++ b/Projects/SteamVR/Assets/Scenes/SampleScene.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c85446a26b75ea05b18d4ddc13bda37604704cb63b64a43a853b914b01487e94 +size 7046 diff --git a/Projects/SteamVR/Assets/Scenes/SampleScene.unity.meta b/Projects/SteamVR/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 00000000..952bd1e9 --- /dev/null +++ b/Projects/SteamVR/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR.meta b/Projects/SteamVR/Assets/SteamVR.meta new file mode 100644 index 00000000..6ae4982d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa7076fae9630924ca428184fc2b4fb1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor.meta b/Projects/SteamVR/Assets/SteamVR/Editor.meta new file mode 100644 index 00000000..90b104cf --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: c33af0785775d7548b22541da37936fe +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs new file mode 100644 index 00000000..810ce41b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs @@ -0,0 +1,231 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Prompt developers to use settings most compatible with SteamVR. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Collections.Generic; +using System.Linq; + +namespace Valve.VR +{ + [InitializeOnLoad] + public class SteamVR_AutoEnableVR + { + static SteamVR_AutoEnableVR() + { + EditorApplication.update += Update; + } + + protected const string openVRString = "OpenVR"; + protected const string openVRPackageString = "com.unity.xr.openvr.standalone"; + +#if UNITY_2018_2_OR_NEWER + private enum PackageStates + { + None, + WaitingForList, + WaitingForAdd, + WaitingForAddConfirm, + Installed, + Failed, + } + + private static UnityEditor.PackageManager.Requests.ListRequest listRequest; + private static UnityEditor.PackageManager.Requests.AddRequest addRequest; + private static PackageStates packageState = PackageStates.None; + private static System.Diagnostics.Stopwatch addingPackageTime = new System.Diagnostics.Stopwatch(); + private static System.Diagnostics.Stopwatch addingPackageTimeTotal = new System.Diagnostics.Stopwatch(); + private static float estimatedTimeToInstall = 80; + private static int addTryCount = 0; +#endif + + public static void Update() + { + if (SteamVR_Settings.instance.autoEnableVR) + { + bool enabledVR = false; + + if (UnityEditor.PlayerSettings.virtualRealitySupported == false) + { + UnityEditor.PlayerSettings.virtualRealitySupported = true; + enabledVR = true; + Debug.Log("[SteamVR Setup] Enabled virtual reality support in Player Settings. (you can disable this by unchecking Assets/SteamVR/SteamVR_Settings.autoEnableVR)"); + } + + UnityEditor.BuildTargetGroup currentTarget = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup; + +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(currentTarget); +#else + string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(currentTarget); +#endif + + bool hasOpenVR = devices.Any(device => string.Equals(device, openVRString, System.StringComparison.CurrentCultureIgnoreCase)); + + if (hasOpenVR == false || enabledVR) + { + string[] newDevices; + if (enabledVR && hasOpenVR == false) + { + newDevices = new string[] { openVRString }; //only list openvr if we enabled it + } + else + { + List devicesList = new List(devices); //list openvr as the first option if it wasn't in the list. + if (hasOpenVR) + devicesList.Remove(openVRString); + + devicesList.Insert(0, openVRString); + newDevices = devicesList.ToArray(); + } + +#if (UNITY_5_6 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + UnityEditorInternal.VR.VREditor.SetVREnabledDevices(currentTarget, newDevices); +#else + UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(currentTarget, newDevices); +#endif + Debug.Log("[SteamVR Setup] Added OpenVR to supported VR SDKs list."); + } + +#if UNITY_2018_2_OR_NEWER + //2018+ requires us to manually add the OpenVR package + + switch (packageState) + { + case PackageStates.None: + //see if we have the package + listRequest = UnityEditor.PackageManager.Client.List(true); + packageState = PackageStates.WaitingForList; + break; + + case PackageStates.WaitingForList: + if (listRequest.IsCompleted) + { + if (listRequest.Error != null || listRequest.Status == UnityEditor.PackageManager.StatusCode.Failure) + { + packageState = PackageStates.Failed; + break; + } + + bool hasPackage = listRequest.Result.Any(package => package.name == openVRPackageString); + + if (hasPackage == false) + { + //if we don't have the package - then install it + addRequest = UnityEditor.PackageManager.Client.Add(openVRPackageString); + packageState = PackageStates.WaitingForAdd; + addTryCount++; + + Debug.Log("[SteamVR Setup] Installing OpenVR package..."); + addingPackageTime.Start(); + addingPackageTimeTotal.Start(); + } + else + { + //if we do have the package do nothing + packageState = PackageStates.Installed; //already installed + } + } + break; + + case PackageStates.WaitingForAdd: + if (addRequest.IsCompleted) + { + if (addRequest.Error != null || addRequest.Status == UnityEditor.PackageManager.StatusCode.Failure) + { + packageState = PackageStates.Failed; + break; + } + else + { + //if the package manager says we added it then confirm that with the list + listRequest = UnityEditor.PackageManager.Client.List(true); + packageState = PackageStates.WaitingForAddConfirm; + } + } + else + { + if (addingPackageTimeTotal.Elapsed.TotalSeconds > estimatedTimeToInstall) + estimatedTimeToInstall *= 2; // :) + + string dialogText; + if (addTryCount == 1) + dialogText = "Installing OpenVR from Unity Package Manager..."; + else + dialogText = "Retrying OpenVR install from Unity Package Manager..."; + + bool cancel = UnityEditor.EditorUtility.DisplayCancelableProgressBar("SteamVR", dialogText, (float)addingPackageTimeTotal.Elapsed.TotalSeconds / estimatedTimeToInstall); + if (cancel) + packageState = PackageStates.Failed; + + if (addingPackageTime.Elapsed.TotalSeconds > 10) + { + Debug.Log("[SteamVR Setup] Waiting for package manager to install OpenVR package..."); + addingPackageTime.Stop(); + addingPackageTime.Reset(); + addingPackageTime.Start(); + } + } + break; + + case PackageStates.WaitingForAddConfirm: + if (listRequest.IsCompleted) + { + if (listRequest.Error != null) + { + packageState = PackageStates.Failed; + break; + } + + bool hasPackage = listRequest.Result.Any(package => package.name == openVRPackageString); + + if (hasPackage == false) + { + if (addTryCount == 1) + { + addRequest = UnityEditor.PackageManager.Client.Add(openVRPackageString); + packageState = PackageStates.WaitingForAdd; + addTryCount++; + + Debug.Log("[SteamVR Setup] Retrying OpenVR package install..."); + } + else + { + packageState = PackageStates.Failed; + } + } + else + { + packageState = PackageStates.Installed; //installed successfully + + Debug.Log("[SteamVR Setup] Successfully installed OpenVR package."); + } + } + break; + } + + if (packageState == PackageStates.Failed || packageState == PackageStates.Installed) + { + addingPackageTime.Stop(); + addingPackageTimeTotal.Stop(); + UnityEditor.EditorUtility.ClearProgressBar(); + UnityEditor.EditorApplication.update -= Update; //we're done trying to auto-enable vr + + if (packageState == PackageStates.Failed) + { + string failtext = "The Unity Package Manager failed to automatically install the OpenVR package. Please open the Package Manager Window and try to install it manually."; + UnityEditor.EditorUtility.DisplayDialog("SteamVR", failtext, "Ok"); + Debug.Log("[SteamVR Setup] " + failtext); + } + } +#else + UnityEditor.EditorApplication.update -= Update; +#endif + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs.meta new file mode 100644 index 00000000..187841d8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_AutoEnableVR.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 359dfd8d7e3732240894f33b6f6d6e56 +timeCreated: 1548371829 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef new file mode 100644 index 00000000..db12c611 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "SteamVR_Editor", + "references": [ + "SteamVR" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef.meta new file mode 100644 index 00000000..b43d2d0a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9bac448de04a4f6448fee1acc220e5a1 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs new file mode 100644 index 00000000..08863cbd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs @@ -0,0 +1,127 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_Camera +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; +using Valve.VR; + +[CustomEditor(typeof(SteamVR_Camera)), CanEditMultipleObjects] +public class SteamVR_Editor : Editor +{ + int bannerHeight = 150; + Texture logo; + + SerializedProperty script, wireframe; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + void OnEnable() + { + var resourcePath = GetResourcePath(); + + logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + + script = serializedObject.FindProperty("m_Script"); + + wireframe = serializedObject.FindProperty("wireframe"); + + foreach (SteamVR_Camera target in targets) + target.ForceLast(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + var rect = GUILayoutUtility.GetRect(Screen.width - 38, bannerHeight, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + if (!Application.isPlaying) + { + var expand = false; + var collapse = false; + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (target.isExpanded) + collapse = true; + else + expand = true; + } + + if (expand) + { + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Expand")) + { + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (!target.isExpanded) + { + target.Expand(); + EditorUtility.SetDirty(target); + } + } + } + GUILayout.Space(18); + GUILayout.EndHorizontal(); + } + + if (collapse) + { + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Collapse")) + { + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (target.isExpanded) + { + target.Collapse(); + EditorUtility.SetDirty(target); + } + } + } + GUILayout.Space(18); + GUILayout.EndHorizontal(); + } + } + + EditorGUILayout.PropertyField(script); + EditorGUILayout.PropertyField(wireframe); + + serializedObject.ApplyModifiedProperties(); + } + + public static void ExportPackage() + { + AssetDatabase.ExportPackage(new string[] { + "Assets/SteamVR", + "Assets/Plugins/openvr_api.cs", + "Assets/Plugins/openvr_api.bundle", + "Assets/Plugins/x86/openvr_api.dll", + "Assets/Plugins/x86/steam_api.dll", + "Assets/Plugins/x86/libsteam_api.so", + "Assets/Plugins/x86_64/openvr_api.dll", + "Assets/Plugins/x86_64/steam_api.dll", + "Assets/Plugins/x86_64/libsteam_api.so", + "Assets/Plugins/x86_64/libopenvr_api.so", + }, "steamvr.unitypackage", ExportPackageOptions.Recurse); + EditorApplication.Exit(0); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta new file mode 100644 index 00000000..1b344ed2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5ba22c80948c94e44a82b9fd1b3abd0d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs new file mode 100644 index 00000000..80b0fe48 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs @@ -0,0 +1,2 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +//removed and added to the SteamVR_Settings asset so it can be configured per project \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta new file mode 100644 index 00000000..3ecb77ac --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 29abf75f7265ccb45b799eac4ab0ca94 +timeCreated: 1487968203 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs new file mode 100644 index 00000000..3acbc50e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs @@ -0,0 +1,106 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_RenderModel +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.Text; +using System.Collections.Generic; + +namespace Valve.VR +{ + [CustomEditor(typeof(SteamVR_RenderModel)), CanEditMultipleObjects] + public class SteamVR_RenderModelEditor : Editor + { + SerializedProperty script, index, modelOverride, shader, verbose, createComponents, updateDynamically; + + static string[] renderModelNames; + int renderModelIndex; + + void OnEnable() + { + script = serializedObject.FindProperty("m_Script"); + index = serializedObject.FindProperty("index"); + modelOverride = serializedObject.FindProperty("modelOverride"); + shader = serializedObject.FindProperty("shader"); + verbose = serializedObject.FindProperty("verbose"); + createComponents = serializedObject.FindProperty("createComponents"); + updateDynamically = serializedObject.FindProperty("updateDynamically"); + + // Load render model names if necessary. + if (renderModelNames == null) + { + renderModelNames = LoadRenderModelNames(); + } + + // Update renderModelIndex based on current modelOverride value. + if (modelOverride.stringValue != "") + { + for (int i = 0; i < renderModelNames.Length; i++) + { + if (modelOverride.stringValue == renderModelNames[i]) + { + renderModelIndex = i; + break; + } + } + } + } + + static string[] LoadRenderModelNames() + { + var results = new List(); + results.Add("None"); + + using (var holder = new SteamVR_RenderModel.RenderModelInterfaceHolder()) + { + var renderModels = holder.instance; + if (renderModels != null) + { + uint count = renderModels.GetRenderModelCount(); + for (uint i = 0; i < count; i++) + { + var buffer = new StringBuilder(); + var requiredSize = renderModels.GetRenderModelName(i, buffer, 0); + if (requiredSize == 0) + continue; + + buffer.EnsureCapacity((int)requiredSize); + renderModels.GetRenderModelName(i, buffer, requiredSize); + results.Add(buffer.ToString()); + } + } + } + + return results.ToArray(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField(script); + EditorGUILayout.PropertyField(index); + //EditorGUILayout.PropertyField(modelOverride); + + GUILayout.BeginHorizontal(); + GUILayout.Label(new GUIContent("Model Override", SteamVR_RenderModel.modelOverrideWarning)); + var selected = EditorGUILayout.Popup(renderModelIndex, renderModelNames); + if (selected != renderModelIndex) + { + renderModelIndex = selected; + modelOverride.stringValue = (selected > 0) ? renderModelNames[selected] : ""; + } + GUILayout.EndHorizontal(); + + EditorGUILayout.PropertyField(shader); + EditorGUILayout.PropertyField(verbose); + EditorGUILayout.PropertyField(createComponents); + EditorGUILayout.PropertyField(updateDynamically); + + serializedObject.ApplyModifiedProperties(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta new file mode 100644 index 00000000..222f5238 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 67867a20919f7db45a2e7034fda1c28e +timeCreated: 1433373945 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs new file mode 100644 index 00000000..a380d290 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs @@ -0,0 +1,383 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_Skybox +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.Text; +using System.Collections.Generic; +using Valve.VR; +using System.IO; + +namespace Valve.VR +{ + [CustomEditor(typeof(SteamVR_Skybox)), CanEditMultipleObjects] + public class SteamVR_SkyboxEditor : Editor + { + private const string nameFormat = "{0}/{1}-{2}.png"; + private const string helpText = "Take snapshot will use the current " + + "position and rotation to capture six directional screenshots to use as this " + + "skybox's textures. Note: This skybox is only used to override what shows up " + + "in the compositor (e.g. when loading levels). Add a Camera component to this " + + "object to override default settings like which layers to render. Additionally, " + + "by specifying your own targetTexture, you can control the size of the textures " + + "and other properties like antialiasing. Don't forget to disable the camera.\n\n" + + "For stereo screenshots, a panorama is render for each eye using the specified " + + "ipd (in millimeters) broken up into segments cellSize pixels square to optimize " + + "generation.\n(32x32 takes about 10 seconds depending on scene complexity, 16x16 " + + "takes around a minute, while will 8x8 take several minutes.)\n\nTo test, hit " + + "play then pause - this will activate the skybox settings, and then drop you to " + + "the compositor where the skybox is rendered."; + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + EditorGUILayout.HelpBox(helpText, MessageType.Info); + + if (GUILayout.Button("Take snapshot")) + { + var directions = new Quaternion[] { + Quaternion.LookRotation(Vector3.forward), + Quaternion.LookRotation(Vector3.back), + Quaternion.LookRotation(Vector3.left), + Quaternion.LookRotation(Vector3.right), + Quaternion.LookRotation(Vector3.up, Vector3.back), + Quaternion.LookRotation(Vector3.down, Vector3.forward) + }; + + Camera tempCamera = null; + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + if (!AssetDatabase.IsValidFolder(assetPath)) + { + var guid = AssetDatabase.CreateFolder(scenePath, sceneName); + assetPath = AssetDatabase.GUIDToAssetPath(guid); + } + + var camera = target.GetComponent(); + if (camera == null) + { + if (tempCamera == null) + tempCamera = new GameObject().AddComponent(); + camera = tempCamera; + } + + var targetTexture = camera.targetTexture; + if (camera.targetTexture == null) + { + targetTexture = new RenderTexture(1024, 1024, 24); + targetTexture.antiAliasing = 8; + camera.targetTexture = targetTexture; + } + + var oldPosition = target.transform.localPosition; + var oldRotation = target.transform.localRotation; + var baseRotation = target.transform.rotation; + + var t = camera.transform; + t.position = target.transform.position; + camera.orthographic = false; + camera.fieldOfView = 90; + + for (int i = 0; i < directions.Length; i++) + { + t.rotation = baseRotation * directions[i]; + camera.Render(); + + // Copy to texture and save to disk. + RenderTexture.active = targetTexture; + var texture = new Texture2D(targetTexture.width, targetTexture.height, TextureFormat.ARGB32, false); + texture.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0); + texture.Apply(); + RenderTexture.active = null; + + var assetName = string.Format(nameFormat, assetPath, target.name, i); + System.IO.File.WriteAllBytes(assetName, texture.EncodeToPNG()); + } + + if (camera != tempCamera) + { + target.transform.localPosition = oldPosition; + target.transform.localRotation = oldRotation; + } + } + + if (tempCamera != null) + { + Object.DestroyImmediate(tempCamera.gameObject); + } + + // Now that everything has be written out, reload the associated assets and assign them. + AssetDatabase.Refresh(); + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + + for (int i = 0; i < directions.Length; i++) + { + var assetName = string.Format(nameFormat, assetPath, target.name, i); + var importer = AssetImporter.GetAtPath(assetName) as TextureImporter; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + importer.textureFormat = TextureImporterFormat.RGB24; +#else + importer.textureCompression = TextureImporterCompression.Uncompressed; +#endif + importer.wrapMode = TextureWrapMode.Clamp; + importer.mipmapEnabled = false; + importer.SaveAndReimport(); + + var texture = AssetDatabase.LoadAssetAtPath(assetName); + target.SetTextureByIndex(i, texture); + } + } + } + else if (GUILayout.Button("Take stereo snapshot")) + { + const int width = 4096; + const int height = width / 2; + const int halfHeight = height / 2; + + var textures = new Texture2D[] { + new Texture2D(width, height, TextureFormat.ARGB32, false), + new Texture2D(width, height, TextureFormat.ARGB32, false) }; + + var timer = new System.Diagnostics.Stopwatch(); + + Camera tempCamera = null; + foreach (SteamVR_Skybox target in targets) + { + timer.Start(); + + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + if (!AssetDatabase.IsValidFolder(assetPath)) + { + var guid = AssetDatabase.CreateFolder(scenePath, sceneName); + assetPath = AssetDatabase.GUIDToAssetPath(guid); + } + + var camera = target.GetComponent(); + if (camera == null) + { + if (tempCamera == null) + tempCamera = new GameObject().AddComponent(); + camera = tempCamera; + } + + var fx = camera.gameObject.AddComponent(); + + var oldTargetTexture = camera.targetTexture; + var oldOrthographic = camera.orthographic; + var oldFieldOfView = camera.fieldOfView; + var oldAspect = camera.aspect; + + var oldPosition = target.transform.localPosition; + var oldRotation = target.transform.localRotation; + var basePosition = target.transform.position; + var baseRotation = target.transform.rotation; + + var transform = camera.transform; + + int cellSize = int.Parse(target.StereoCellSize.ToString().Substring(1)); + float ipd = target.StereoIpdMm / 1000.0f; + int vTotal = halfHeight / cellSize; + float dv = 90.0f / vTotal; // vertical degrees per segment + float dvHalf = dv / 2.0f; + + var targetTexture = new RenderTexture(cellSize, cellSize, 24); + targetTexture.wrapMode = TextureWrapMode.Clamp; + targetTexture.antiAliasing = 8; + + camera.fieldOfView = dv; + camera.orthographic = false; + camera.targetTexture = targetTexture; + + // Render sections of a sphere using a rectilinear projection + // and resample using a sphereical projection into a single panorama + // texture per eye. We break into sections in order to keep the eye + // separation similar around the sphere. Rendering alternates between + // top and bottom sections, sweeping horizontally around the sphere, + // alternating left and right eyes. + for (int v = 0; v < vTotal; v++) + { + var pitch = 90.0f - (v * dv) - dvHalf; + var uTotal = width / targetTexture.width; + var du = 360.0f / uTotal; // horizontal degrees per segment + var duHalf = du / 2.0f; + + var vTarget = v * halfHeight / vTotal; + + for (int i = 0; i < 2; i++) // top, bottom + { + if (i == 1) + { + pitch = -pitch; + vTarget = height - vTarget - cellSize; + } + + for (int u = 0; u < uTotal; u++) + { + var yaw = -180.0f + (u * du) + duHalf; + + var uTarget = u * width / uTotal; + + var xOffset = -ipd / 2 * Mathf.Cos(pitch * Mathf.Deg2Rad); + + for (int j = 0; j < 2; j++) // left, right + { + var texture = textures[j]; + + if (j == 1) + { + xOffset = -xOffset; + } + + var offset = baseRotation * Quaternion.Euler(0, yaw, 0) * new Vector3(xOffset, 0, 0); + transform.position = basePosition + offset; + + var direction = Quaternion.Euler(pitch, yaw, 0.0f); + transform.rotation = baseRotation * direction; + + // vector pointing to center of this section + var N = direction * Vector3.forward; + + // horizontal span of this section in degrees + var phi0 = yaw - (du / 2); + var phi1 = phi0 + du; + + // vertical span of this section in degrees + var theta0 = pitch + (dv / 2); + var theta1 = theta0 - dv; + + var midPhi = (phi0 + phi1) / 2; + var baseTheta = Mathf.Abs(theta0) < Mathf.Abs(theta1) ? theta0 : theta1; + + // vectors pointing to corners of image closes to the equator + var V00 = Quaternion.Euler(baseTheta, phi0, 0.0f) * Vector3.forward; + var V01 = Quaternion.Euler(baseTheta, phi1, 0.0f) * Vector3.forward; + + // vectors pointing to top and bottom midsection of image + var V0M = Quaternion.Euler(theta0, midPhi, 0.0f) * Vector3.forward; + var V1M = Quaternion.Euler(theta1, midPhi, 0.0f) * Vector3.forward; + + // intersection points for each of the above + var P00 = V00 / Vector3.Dot(V00, N); + var P01 = V01 / Vector3.Dot(V01, N); + var P0M = V0M / Vector3.Dot(V0M, N); + var P1M = V1M / Vector3.Dot(V1M, N); + + // calculate basis vectors for plane + var P00_P01 = P01 - P00; + var P0M_P1M = P1M - P0M; + + var uMag = P00_P01.magnitude; + var vMag = P0M_P1M.magnitude; + + var uScale = 1.0f / uMag; + var vScale = 1.0f / vMag; + + var uAxis = P00_P01 * uScale; + var vAxis = P0M_P1M * vScale; + + // update material constant buffer + fx.Set(N, phi0, phi1, theta0, theta1, + uAxis, P00, uScale, + vAxis, P0M, vScale); + + camera.aspect = uMag / vMag; + camera.Render(); + + RenderTexture.active = targetTexture; + texture.ReadPixels(new Rect(0, 0, targetTexture.width, targetTexture.height), uTarget, vTarget); + RenderTexture.active = null; + } + } + } + } + + // Save textures to disk. + for (int i = 0; i < 2; i++) + { + var texture = textures[i]; + + texture.Apply(); + var assetName = string.Format(nameFormat, assetPath, target.name, i); + File.WriteAllBytes(assetName, texture.EncodeToPNG()); + } + + // Cleanup. + if (camera != tempCamera) + { + camera.targetTexture = oldTargetTexture; + camera.orthographic = oldOrthographic; + camera.fieldOfView = oldFieldOfView; + camera.aspect = oldAspect; + + target.transform.localPosition = oldPosition; + target.transform.localRotation = oldRotation; + } + else + { + tempCamera.targetTexture = null; + } + + DestroyImmediate(targetTexture); + DestroyImmediate(fx); + + timer.Stop(); + Debug.Log(string.Format("[SteamVR] Screenshot took {0} seconds.", timer.Elapsed)); + } + + if (tempCamera != null) + { + DestroyImmediate(tempCamera.gameObject); + } + + DestroyImmediate(textures[0]); + DestroyImmediate(textures[1]); + + // Now that everything has be written out, reload the associated assets and assign them. + AssetDatabase.Refresh(); + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + + for (int i = 0; i < 2; i++) + { + var assetName = string.Format(nameFormat, assetPath, target.name, i); + var importer = AssetImporter.GetAtPath(assetName) as TextureImporter; + importer.mipmapEnabled = false; + importer.wrapMode = TextureWrapMode.Repeat; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + importer.SetPlatformTextureSettings("Standalone", width, TextureImporterFormat.RGB24); +#else + var settings = importer.GetPlatformTextureSettings("Standalone"); + settings.textureCompression = TextureImporterCompression.Uncompressed; + settings.maxTextureSize = width; + importer.SetPlatformTextureSettings(settings); +#endif + importer.SaveAndReimport(); + + var texture = AssetDatabase.LoadAssetAtPath(assetName); + target.SetTextureByIndex(i, texture); + } + } + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta new file mode 100644 index 00000000..95230d04 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80087fbbf7bf93a46bb4aea276b19568 +timeCreated: 1446765449 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs new file mode 100644 index 00000000..c204f47c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs @@ -0,0 +1,692 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Prompt developers to use settings most compatible with SteamVR. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace Valve.VR +{ + [InitializeOnLoad] + public class SteamVR_UnitySettingsWindow : EditorWindow + { + const bool forceShow = false; // Set to true to get the dialog to show back up in the case you clicked Ignore All. + + const string ignore = "ignore."; + const string useRecommended = "Use recommended ({0})"; + const string currentValue = " (current = {0})"; + + const string buildTarget = "Build Target"; + const string showUnitySplashScreen = "Show Unity Splashscreen"; + const string defaultIsFullScreen = "Default is Fullscreen"; + const string defaultScreenSize = "Default Screen Size"; + const string runInBackground = "Run In Background"; + const string displayResolutionDialog = "Display Resolution Dialog"; + const string resizableWindow = "Resizable Window"; + const string fullscreenMode = "D3D11 Fullscreen Mode"; + const string visibleInBackground = "Visible In Background"; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + const string renderingPath = "Rendering Path"; +#endif + const string colorSpace = "Color Space"; + const string gpuSkinning = "GPU Skinning"; +#if false // skyboxes are currently broken + const string singlePassStereoRendering = "Single-Pass Stereo Rendering"; +#endif + + const BuildTarget recommended_BuildTarget = BuildTarget.StandaloneWindows64; + const bool recommended_ShowUnitySplashScreen = false; + const bool recommended_DefaultIsFullScreen = false; + const int recommended_DefaultScreenWidth = 1024; + const int recommended_DefaultScreenHeight = 768; + const bool recommended_RunInBackground = true; +#if !UNITY_2019_1_OR_NEWER + const ResolutionDialogSetting recommended_DisplayResolutionDialog = ResolutionDialogSetting.HiddenByDefault; +#endif + const bool recommended_ResizableWindow = true; + const D3D11FullscreenMode recommended_FullscreenMode = D3D11FullscreenMode.FullscreenWindow; + const bool recommended_VisibleInBackground = true; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + const RenderingPath recommended_RenderPath = RenderingPath.Forward; +#endif + const ColorSpace recommended_ColorSpace = ColorSpace.Linear; + const bool recommended_GpuSkinning = true; +#if false + const bool recommended_SinglePassStereoRendering = true; +#endif + +#if UNITY_2018_1_OR_NEWER + const FullScreenMode recommended_FullScreenMode = FullScreenMode.FullScreenWindow; +#endif + static SteamVR_UnitySettingsWindow window; + + static SteamVR_UnitySettingsWindow() + { + EditorApplication.update += Update; + } + + static void Update() + { + bool show = + (!EditorPrefs.HasKey(ignore + buildTarget) && + EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) || + (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) || +#else + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) || +#endif + +#if UNITY_2018_1_OR_NEWER + (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.fullScreenMode != recommended_FullScreenMode) || +#else + (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) || + (!EditorPrefs.HasKey(ignore + fullscreenMode) && + PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) || +#endif + (!EditorPrefs.HasKey(ignore + defaultScreenSize) && + (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight)) || + (!EditorPrefs.HasKey(ignore + runInBackground) && + PlayerSettings.runInBackground != recommended_RunInBackground) || +#if !UNITY_2019_1_OR_NEWER + (!EditorPrefs.HasKey(ignore + displayResolutionDialog) && + PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) || +#endif + (!EditorPrefs.HasKey(ignore + resizableWindow) && + PlayerSettings.resizableWindow != recommended_ResizableWindow) || + (!EditorPrefs.HasKey(ignore + visibleInBackground) && + PlayerSettings.visibleInBackground != recommended_VisibleInBackground) || +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + (!EditorPrefs.HasKey(ignore + renderingPath) && + PlayerSettings.renderingPath != recommended_RenderPath) || +#endif + (!EditorPrefs.HasKey(ignore + colorSpace) && + PlayerSettings.colorSpace != recommended_ColorSpace) || + (!EditorPrefs.HasKey(ignore + gpuSkinning) && + PlayerSettings.gpuSkinning != recommended_GpuSkinning) || +#if false + (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && + PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) || +#endif + forceShow; + + if (show) + { + window = GetWindow(true); + window.minSize = new Vector2(320, 440); + //window.title = "SteamVR"; + } + + string[] dlls = new string[] + { + "Plugins/x86/openvr_api.dll", + "Plugins/x86_64/openvr_api.dll" + }; + + foreach (string path in dlls) + { + if (!File.Exists(Application.dataPath + "/" + path)) + continue; + + if (AssetDatabase.DeleteAsset("Assets/" + path)) + Debug.Log("[SteamVR Setup] Deleting " + path); + else + { + Debug.Log("[SteamVR Setup] " + path + " in use; cannot delete. Please restart Unity to complete upgrade."); + } + } + + EditorApplication.update -= Update; + } + + Vector2 scrollPosition; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + public void OnGUI() + { + var resourcePath = GetResourcePath(); + var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + EditorGUILayout.HelpBox("Recommended project settings for SteamVR:", MessageType.Warning); + + scrollPosition = GUILayout.BeginScrollView(scrollPosition); + + int numItems = 0; + + if (!EditorPrefs.HasKey(ignore + buildTarget) && + EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) + { + ++numItems; + + GUILayout.Label(buildTarget + string.Format(currentValue, EditorUserBuildSettings.activeBuildTarget)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_BuildTarget))) + { +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + buildTarget, true); + } + + GUILayout.EndHorizontal(); + } + +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && + PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) + { + ++numItems; + + GUILayout.Label(showUnitySplashScreen + string.Format(currentValue, PlayerSettings.showUnitySplashScreen)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ShowUnitySplashScreen))) + { + PlayerSettings.showUnitySplashScreen = recommended_ShowUnitySplashScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + } + + GUILayout.EndHorizontal(); + } +#else + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) + { + ++numItems; + + GUILayout.Label(showUnitySplashScreen + string.Format(currentValue, PlayerSettings.SplashScreen.show)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ShowUnitySplashScreen))) + { + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + } + + GUILayout.EndHorizontal(); + } +#endif + +#if UNITY_2018_1_OR_NEWER +#else + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) + { + ++numItems; + + GUILayout.Label(defaultIsFullScreen + string.Format(currentValue, PlayerSettings.defaultIsFullScreen)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_DefaultIsFullScreen))) + { + PlayerSettings.defaultIsFullScreen = recommended_DefaultIsFullScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); + } + + GUILayout.EndHorizontal(); + } +#endif + + if (!EditorPrefs.HasKey(ignore + defaultScreenSize) && + (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight)) + { + ++numItems; + + GUILayout.Label(defaultScreenSize + string.Format(" ({0}x{1})", PlayerSettings.defaultScreenWidth, PlayerSettings.defaultScreenHeight)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format("Use recommended ({0}x{1})", recommended_DefaultScreenWidth, recommended_DefaultScreenHeight))) + { + PlayerSettings.defaultScreenWidth = recommended_DefaultScreenWidth; + PlayerSettings.defaultScreenHeight = recommended_DefaultScreenHeight; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + defaultScreenSize, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + runInBackground) && + PlayerSettings.runInBackground != recommended_RunInBackground) + { + ++numItems; + + GUILayout.Label(runInBackground + string.Format(currentValue, PlayerSettings.runInBackground)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_RunInBackground))) + { + PlayerSettings.runInBackground = recommended_RunInBackground; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + runInBackground, true); + } + + GUILayout.EndHorizontal(); + } + +#if !UNITY_2019_1_OR_NEWER + if (!EditorPrefs.HasKey(ignore + displayResolutionDialog) && + PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) + { + ++numItems; + + GUILayout.Label(displayResolutionDialog + string.Format(currentValue, PlayerSettings.displayResolutionDialog)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_DisplayResolutionDialog))) + { + PlayerSettings.displayResolutionDialog = recommended_DisplayResolutionDialog; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + displayResolutionDialog, true); + } + + GUILayout.EndHorizontal(); + } +#endif + + if (!EditorPrefs.HasKey(ignore + resizableWindow) && + PlayerSettings.resizableWindow != recommended_ResizableWindow) + { + ++numItems; + + GUILayout.Label(resizableWindow + string.Format(currentValue, PlayerSettings.resizableWindow)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ResizableWindow))) + { + PlayerSettings.resizableWindow = recommended_ResizableWindow; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + resizableWindow, true); + } + + GUILayout.EndHorizontal(); + } +#if UNITY_2018_1_OR_NEWER + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.fullScreenMode != recommended_FullScreenMode) +#else + if (!EditorPrefs.HasKey(ignore + fullscreenMode) && + PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) +#endif + { + ++numItems; + +#if UNITY_2018_1_OR_NEWER + GUILayout.Label(fullscreenMode + string.Format(currentValue, PlayerSettings.fullScreenMode)); +#else + GUILayout.Label(fullscreenMode + string.Format(currentValue, PlayerSettings.d3d11FullscreenMode)); +#endif + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_FullscreenMode))) + { +#if UNITY_2018_1_OR_NEWER + PlayerSettings.fullScreenMode = recommended_FullScreenMode; +#else + PlayerSettings.d3d11FullscreenMode = recommended_FullscreenMode; +#endif + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + fullscreenMode, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + visibleInBackground) && + PlayerSettings.visibleInBackground != recommended_VisibleInBackground) + { + ++numItems; + + GUILayout.Label(visibleInBackground + string.Format(currentValue, PlayerSettings.visibleInBackground)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_VisibleInBackground))) + { + PlayerSettings.visibleInBackground = recommended_VisibleInBackground; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + visibleInBackground, true); + } + + GUILayout.EndHorizontal(); + } +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + renderingPath) && + PlayerSettings.renderingPath != recommended_RenderPath) + { + ++numItems; + + GUILayout.Label(renderingPath + string.Format(currentValue, PlayerSettings.renderingPath)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_RenderPath) + " - required for MSAA")) + { + PlayerSettings.renderingPath = recommended_RenderPath; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + renderingPath, true); + } + + GUILayout.EndHorizontal(); + } +#endif + if (!EditorPrefs.HasKey(ignore + colorSpace) && + PlayerSettings.colorSpace != recommended_ColorSpace) + { + ++numItems; + + GUILayout.Label(colorSpace + string.Format(currentValue, PlayerSettings.colorSpace)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ColorSpace) + " - requires reloading scene")) + { + PlayerSettings.colorSpace = recommended_ColorSpace; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + colorSpace, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + gpuSkinning) && + PlayerSettings.gpuSkinning != recommended_GpuSkinning) + { + ++numItems; + + GUILayout.Label(gpuSkinning + string.Format(currentValue, PlayerSettings.gpuSkinning)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_GpuSkinning))) + { + PlayerSettings.gpuSkinning = recommended_GpuSkinning; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + gpuSkinning, true); + } + + GUILayout.EndHorizontal(); + } + +#if false + if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && + PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) + { + ++numItems; + + GUILayout.Label(singlePassStereoRendering + string.Format(currentValue, PlayerSettings.singlePassStereoRendering)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_SinglePassStereoRendering))) + { + PlayerSettings.singlePassStereoRendering = recommended_SinglePassStereoRendering; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + singlePassStereoRendering, true); + } + + GUILayout.EndHorizontal(); + } +#endif + + GUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Clear All Ignores")) + { + EditorPrefs.DeleteKey(ignore + buildTarget); + EditorPrefs.DeleteKey(ignore + showUnitySplashScreen); + EditorPrefs.DeleteKey(ignore + defaultIsFullScreen); + EditorPrefs.DeleteKey(ignore + defaultScreenSize); + EditorPrefs.DeleteKey(ignore + runInBackground); + EditorPrefs.DeleteKey(ignore + displayResolutionDialog); + EditorPrefs.DeleteKey(ignore + resizableWindow); + EditorPrefs.DeleteKey(ignore + fullscreenMode); + EditorPrefs.DeleteKey(ignore + visibleInBackground); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorPrefs.DeleteKey(ignore + renderingPath); +#endif + EditorPrefs.DeleteKey(ignore + colorSpace); + EditorPrefs.DeleteKey(ignore + gpuSkinning); +#if false + EditorPrefs.DeleteKey(ignore + singlePassStereoRendering); +#endif + } + + GUILayout.EndHorizontal(); + + GUILayout.EndScrollView(); + + GUILayout.FlexibleSpace(); + + GUILayout.BeginHorizontal(); + + if (numItems > 0) + { + if (GUILayout.Button("Accept All")) + { + // Only set those that have not been explicitly ignored. + if (!EditorPrefs.HasKey(ignore + buildTarget)) +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen)) +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + PlayerSettings.showUnitySplashScreen = recommended_ShowUnitySplashScreen; +#else + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; +#endif + +#if UNITY_2018_1_OR_NEWER + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen)) + PlayerSettings.fullScreenMode = recommended_FullScreenMode; +#else + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen)) + PlayerSettings.defaultIsFullScreen = recommended_DefaultIsFullScreen; + if (!EditorPrefs.HasKey(ignore + fullscreenMode)) + PlayerSettings.d3d11FullscreenMode = recommended_FullscreenMode; +#endif + if (!EditorPrefs.HasKey(ignore + defaultScreenSize)) + { + PlayerSettings.defaultScreenWidth = recommended_DefaultScreenWidth; + PlayerSettings.defaultScreenHeight = recommended_DefaultScreenHeight; + } + if (!EditorPrefs.HasKey(ignore + runInBackground)) + PlayerSettings.runInBackground = recommended_RunInBackground; +#if !UNITY_2019_1_OR_NEWER + if (!EditorPrefs.HasKey(ignore + displayResolutionDialog)) + PlayerSettings.displayResolutionDialog = recommended_DisplayResolutionDialog; +#endif + if (!EditorPrefs.HasKey(ignore + resizableWindow)) + PlayerSettings.resizableWindow = recommended_ResizableWindow; + if (!EditorPrefs.HasKey(ignore + visibleInBackground)) + PlayerSettings.visibleInBackground = recommended_VisibleInBackground; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + renderingPath)) + PlayerSettings.renderingPath = recommended_RenderPath; +#endif + if (!EditorPrefs.HasKey(ignore + colorSpace)) + PlayerSettings.colorSpace = recommended_ColorSpace; + if (!EditorPrefs.HasKey(ignore + gpuSkinning)) + PlayerSettings.gpuSkinning = recommended_GpuSkinning; +#if false + if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering)) + PlayerSettings.singlePassStereoRendering = recommended_SinglePassStereoRendering; +#endif + + EditorUtility.DisplayDialog("Accept All", "You made the right choice!", "Ok"); + + Close(); + } + + if (GUILayout.Button("Ignore All")) + { + if (EditorUtility.DisplayDialog("Ignore All", "Are you sure?", "Yes, Ignore All", "Cancel")) + { + // Only ignore those that do not currently match our recommended settings. + if (EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) + EditorPrefs.SetBool(ignore + buildTarget, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) +#else + if (PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) +#endif + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + +#if UNITY_2018_1_OR_NEWER + if (PlayerSettings.fullScreenMode != recommended_FullScreenMode) + { + EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); + EditorPrefs.SetBool(ignore + fullscreenMode, true); + } +#else + if (PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) + EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); + if (PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) + EditorPrefs.SetBool(ignore + fullscreenMode, true); +#endif + if (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight) + EditorPrefs.SetBool(ignore + defaultScreenSize, true); + if (PlayerSettings.runInBackground != recommended_RunInBackground) + EditorPrefs.SetBool(ignore + runInBackground, true); +#if !UNITY_2019_1_OR_NEWER + if (PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) + EditorPrefs.SetBool(ignore + displayResolutionDialog, true); +#endif + if (PlayerSettings.resizableWindow != recommended_ResizableWindow) + EditorPrefs.SetBool(ignore + resizableWindow, true); + if (PlayerSettings.visibleInBackground != recommended_VisibleInBackground) + EditorPrefs.SetBool(ignore + visibleInBackground, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (PlayerSettings.renderingPath != recommended_RenderPath) + EditorPrefs.SetBool(ignore + renderingPath, true); +#endif + if (PlayerSettings.colorSpace != recommended_ColorSpace) + EditorPrefs.SetBool(ignore + colorSpace, true); + if (PlayerSettings.gpuSkinning != recommended_GpuSkinning) + EditorPrefs.SetBool(ignore + gpuSkinning, true); +#if false + if (PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) + EditorPrefs.SetBool(ignore + singlePassStereoRendering, true); +#endif + + Close(); + } + } + } + else if (GUILayout.Button("Close")) + { + Close(); + } + + GUILayout.EndHorizontal(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs.meta new file mode 100644 index 00000000..88876280 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UnitySettingsWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2244eee8a3a4784fb40d1123ff69301 +timeCreated: 1438809573 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs new file mode 100644 index 00000000..12607ee6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs @@ -0,0 +1,180 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Notify developers when a new version of the plugin is available. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Text.RegularExpressions; + +#if UNITY_2018_3_OR_NEWER +#pragma warning disable CS0618 +#endif + +namespace Valve.VR +{ + [InitializeOnLoad] + public class SteamVR_Update : EditorWindow + { + const string currentVersion = "2.1"; + const string versionUrl = "http://media.steampowered.com/apps/steamvr/unitypluginversion.txt"; + const string notesUrl = "http://media.steampowered.com/apps/steamvr/unityplugin-v{0}.txt"; + const string pluginUrl = "http://u3d.as/content/valve-corporation/steam-vr-plugin"; + const string doNotShowKey = "SteamVR.DoNotShow.v{0}"; + + static bool gotVersion = false; + static WWW wwwVersion, wwwNotes; + static string version, notes; + static SteamVR_Update window; + + static SteamVR_Update() + { + EditorApplication.update += Update; + } + + static void Update() + { + if (!gotVersion) + { + if (wwwVersion == null) + wwwVersion = new WWW(versionUrl); + + if (!wwwVersion.isDone) + return; + + if (UrlSuccess(wwwVersion)) + version = wwwVersion.text; + + wwwVersion = null; + gotVersion = true; + + if (ShouldDisplay()) + { + var url = string.Format(notesUrl, version); + wwwNotes = new WWW(url); + + window = GetWindow(true); + window.minSize = new Vector2(320, 440); + //window.title = "SteamVR"; + } + } + + if (wwwNotes != null) + { + if (!wwwNotes.isDone) + return; + + if (UrlSuccess(wwwNotes)) + notes = wwwNotes.text; + + wwwNotes = null; + + if (notes != "") + window.Repaint(); + } + + EditorApplication.update -= Update; + } + + static bool UrlSuccess(WWW www) + { + if (!string.IsNullOrEmpty(www.error)) + return false; + if (Regex.IsMatch(www.text, "404 not found", RegexOptions.IgnoreCase)) + return false; + return true; + } + + static bool ShouldDisplay() + { + if (string.IsNullOrEmpty(version)) + return false; + if (version == currentVersion) + return false; + if (EditorPrefs.HasKey(string.Format(doNotShowKey, version))) + return false; + + // parse to see if newer (e.g. 1.0.4 vs 1.0.3) + var versionSplit = version.Split('.'); + var currentVersionSplit = currentVersion.Split('.'); + for (int i = 0; i < versionSplit.Length && i < currentVersionSplit.Length; i++) + { + int versionValue, currentVersionValue; + if (int.TryParse(versionSplit[i], out versionValue) && + int.TryParse(currentVersionSplit[i], out currentVersionValue)) + { + if (versionValue > currentVersionValue) + return true; + if (versionValue < currentVersionValue) + return false; + } + } + + // same up to this point, now differentiate based on number of sub values (e.g. 1.0.4.1 vs 1.0.4) + if (versionSplit.Length <= currentVersionSplit.Length) + return false; + + return true; + } + + Vector2 scrollPosition; + bool toggleState; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + public void OnGUI() + { + EditorGUILayout.HelpBox("A new version of the SteamVR plugin is available!", MessageType.Warning); + + var resourcePath = GetResourcePath(); + var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + scrollPosition = GUILayout.BeginScrollView(scrollPosition); + + GUILayout.Label("Current version: " + currentVersion); + GUILayout.Label("New version: " + version); + + if (notes != "") + { + GUILayout.Label("Release notes:"); + EditorGUILayout.HelpBox(notes, MessageType.Info); + } + + GUILayout.EndScrollView(); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Get Latest Version")) + { + Application.OpenURL(pluginUrl); + } + + EditorGUI.BeginChangeCheck(); + var doNotShow = GUILayout.Toggle(toggleState, "Do not prompt for this version again."); + if (EditorGUI.EndChangeCheck()) + { + toggleState = doNotShow; + var key = string.Format(doNotShowKey, version); + if (doNotShow) + EditorPrefs.SetBool(key, true); + else + EditorPrefs.DeleteKey(key); + } + } + } +} + +#if UNITY_2018_3_OR_NEWER +#pragma warning restore CS0618 +#endif \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs.meta new file mode 100644 index 00000000..de16a501 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_Update.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73a0556bda803bf4e898751dcfcf21a8 +timeCreated: 1433880062 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs new file mode 100644 index 00000000..b9ded629 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs @@ -0,0 +1,26 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_UpdateModes))] + public class SteamVR_UpdateModesEditor : PropertyDrawer + { + public override void OnGUI(Rect _position, SerializedProperty _property, GUIContent _label) + { + _property.intValue = EditorGUI.MaskField(_position, _label, _property.intValue, _property.enumNames); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs.meta new file mode 100644 index 00000000..ed6e96fe --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Editor/SteamVR_UpdateModeEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 656e3d05f0a289d4ab6f3d44f65c9b6d +timeCreated: 1521584981 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras.meta b/Projects/SteamVR/Assets/SteamVR/Extras.meta new file mode 100644 index 00000000..5785668d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 61f4796ee4f00314e8d8b1ad39a78c28 +folderAsset: yes +timeCreated: 1438797390 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs new file mode 100644 index 00000000..1dc7d82f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs @@ -0,0 +1,35 @@ +using UnityEngine; +using System.Collections; + +namespace Valve.VR.Extras +{ + /// + /// This is an example class of how to force steamvr initialization. You still need to have vr mode enabled + /// but you can have the top sdk set to None, then this script will force it to OpenVR after a second + /// + public class SteamVR_ForceSteamVRMode : MonoBehaviour + { + public GameObject vrCameraPrefab; + + public GameObject[] disableObjectsOnLoad; + + private IEnumerator Start() + { + yield return new WaitForSeconds(1f); // just here to show that you can wait a while. + + SteamVR.Initialize(true); + + while (SteamVR.initializedState != SteamVR.InitializedStates.InitializeSuccess) + yield return null; + + for (int disableIndex = 0; disableIndex < disableObjectsOnLoad.Length; disableIndex++) + { + GameObject toDisable = disableObjectsOnLoad[disableIndex]; + if (toDisable != null) + toDisable.SetActive(false); + } + + GameObject.Instantiate(vrCameraPrefab); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs.meta new file mode 100644 index 00000000..fe36def8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c4bc5db9c652ff8408b7cda0197f87f1 +timeCreated: 1539107854 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity new file mode 100644 index 00000000..03e3bd11 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e60b512f94079335d7b6af2e0b8be59f6b976c0718f00ddf1ae478eea484fb +size 11939 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity.meta new file mode 100644 index 00000000..2cf399eb --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ForceSteamVRMode.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b1775e13a163e146930422a18e54bfc +timeCreated: 1539107812 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs new file mode 100644 index 00000000..b880971e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs @@ -0,0 +1,83 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +namespace Valve.VR.Extras +{ + public class SteamVR_GazeTracker : MonoBehaviour + { + public bool isInGaze = false; + public event GazeEventHandler GazeOn; + public event GazeEventHandler GazeOff; + public float gazeInCutoff = 0.15f; + public float gazeOutCutoff = 0.4f; + + // Contains a HMD tracked object that we can use to find the user's gaze + protected Transform hmdTrackedObject = null; + + public virtual void OnGazeOn(GazeEventArgs gazeEventArgs) + { + if (GazeOn != null) + GazeOn(this, gazeEventArgs); + } + + public virtual void OnGazeOff(GazeEventArgs gazeEventArgs) + { + if (GazeOff != null) + GazeOff(this, gazeEventArgs); + } + + protected virtual void Update() + { + // If we haven't set up hmdTrackedObject find what the user is looking at + if (hmdTrackedObject == null) + { + SteamVR_TrackedObject[] trackedObjects = FindObjectsOfType(); + foreach (SteamVR_TrackedObject tracked in trackedObjects) + { + if (tracked.index == SteamVR_TrackedObject.EIndex.Hmd) + { + hmdTrackedObject = tracked.transform; + break; + } + } + } + + if (hmdTrackedObject) + { + Ray ray = new Ray(hmdTrackedObject.position, hmdTrackedObject.forward); + Plane plane = new Plane(hmdTrackedObject.forward, transform.position); + + float enter = 0.0f; + if (plane.Raycast(ray, out enter)) + { + Vector3 intersect = hmdTrackedObject.position + hmdTrackedObject.forward * enter; + float dist = Vector3.Distance(intersect, transform.position); + //Debug.Log("Gaze dist = " + dist); + if (dist < gazeInCutoff && !isInGaze) + { + isInGaze = true; + GazeEventArgs gazeEventArgs; + gazeEventArgs.distance = dist; + OnGazeOn(gazeEventArgs); + } + else if (dist >= gazeOutCutoff && isInGaze) + { + isInGaze = false; + GazeEventArgs gazeEventArgs; + gazeEventArgs.distance = dist; + OnGazeOff(gazeEventArgs); + } + } + + } + + } + } + public struct GazeEventArgs + { + public float distance; + } + + public delegate void GazeEventHandler(object sender, GazeEventArgs gazeEventArgs); +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta new file mode 100644 index 00000000..9f67d122 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 501eb8b744f73714fbe7dbdd5e3ef66e +timeCreated: 1426193800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs new file mode 100644 index 00000000..c9488b90 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs @@ -0,0 +1,168 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +namespace Valve.VR.Extras +{ + public class SteamVR_LaserPointer : MonoBehaviour + { + public SteamVR_Behaviour_Pose pose; + + //public SteamVR_Action_Boolean interactWithUI = SteamVR_Input.__actions_default_in_InteractUI; + public SteamVR_Action_Boolean interactWithUI = SteamVR_Input.GetBooleanAction("InteractUI"); + + public bool active = true; + public Color color; + public float thickness = 0.002f; + public Color clickColor = Color.green; + public GameObject holder; + public GameObject pointer; + bool isActive = false; + public bool addRigidBody = false; + public Transform reference; + public event PointerEventHandler PointerIn; + public event PointerEventHandler PointerOut; + public event PointerEventHandler PointerClick; + + Transform previousContact = null; + + + private void Start() + { + if (pose == null) + pose = this.GetComponent(); + if (pose == null) + Debug.LogError("No SteamVR_Behaviour_Pose component found on this object", this); + + if (interactWithUI == null) + Debug.LogError("No ui interaction action has been set on this component.", this); + + + holder = new GameObject(); + holder.transform.parent = this.transform; + holder.transform.localPosition = Vector3.zero; + holder.transform.localRotation = Quaternion.identity; + + pointer = GameObject.CreatePrimitive(PrimitiveType.Cube); + pointer.transform.parent = holder.transform; + pointer.transform.localScale = new Vector3(thickness, thickness, 100f); + pointer.transform.localPosition = new Vector3(0f, 0f, 50f); + pointer.transform.localRotation = Quaternion.identity; + BoxCollider collider = pointer.GetComponent(); + if (addRigidBody) + { + if (collider) + { + collider.isTrigger = true; + } + Rigidbody rigidBody = pointer.AddComponent(); + rigidBody.isKinematic = true; + } + else + { + if (collider) + { + Object.Destroy(collider); + } + } + Material newMaterial = new Material(Shader.Find("Unlit/Color")); + newMaterial.SetColor("_Color", color); + pointer.GetComponent().material = newMaterial; + } + + public virtual void OnPointerIn(PointerEventArgs e) + { + if (PointerIn != null) + PointerIn(this, e); + } + + public virtual void OnPointerClick(PointerEventArgs e) + { + if (PointerClick != null) + PointerClick(this, e); + } + + public virtual void OnPointerOut(PointerEventArgs e) + { + if (PointerOut != null) + PointerOut(this, e); + } + + + private void Update() + { + if (!isActive) + { + isActive = true; + this.transform.GetChild(0).gameObject.SetActive(true); + } + + float dist = 100f; + + Ray raycast = new Ray(transform.position, transform.forward); + RaycastHit hit; + bool bHit = Physics.Raycast(raycast, out hit); + + if (previousContact && previousContact != hit.transform) + { + PointerEventArgs args = new PointerEventArgs(); + args.fromInputSource = pose.inputSource; + args.distance = 0f; + args.flags = 0; + args.target = previousContact; + OnPointerOut(args); + previousContact = null; + } + if (bHit && previousContact != hit.transform) + { + PointerEventArgs argsIn = new PointerEventArgs(); + argsIn.fromInputSource = pose.inputSource; + argsIn.distance = hit.distance; + argsIn.flags = 0; + argsIn.target = hit.transform; + OnPointerIn(argsIn); + previousContact = hit.transform; + } + if (!bHit) + { + previousContact = null; + } + if (bHit && hit.distance < 100f) + { + dist = hit.distance; + } + + if (bHit && interactWithUI.GetStateUp(pose.inputSource)) + { + PointerEventArgs argsClick = new PointerEventArgs(); + argsClick.fromInputSource = pose.inputSource; + argsClick.distance = hit.distance; + argsClick.flags = 0; + argsClick.target = hit.transform; + OnPointerClick(argsClick); + } + + if (interactWithUI != null && interactWithUI.GetState(pose.inputSource)) + { + pointer.transform.localScale = new Vector3(thickness * 5f, thickness * 5f, dist); + pointer.GetComponent().material.color = clickColor; + } + else + { + pointer.transform.localScale = new Vector3(thickness, thickness, dist); + pointer.GetComponent().material.color = color; + } + pointer.transform.localPosition = new Vector3(0f, 0f, dist / 2f); + } + } + + public struct PointerEventArgs + { + public SteamVR_Input_Sources fromInputSource; + public uint flags; + public float distance; + public Transform target; + } + + public delegate void PointerEventHandler(object sender, PointerEventArgs e); +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta new file mode 100644 index 00000000..3037ec8f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b2f511c1adaa1e94ebe7ca97bbcabd17 +timeCreated: 1539298734 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity new file mode 100644 index 00000000..3b7373fc --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59b77685499a5e358077a49436089ab94c5c006af76c1d6631b70ab1329f3649 +size 16523 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity.meta new file mode 100644 index 00000000..1af9797f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_LaserPointer.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2343db151bc3864e9088f8e4230cdc1 +timeCreated: 1539298758 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity new file mode 100644 index 00000000..ad2a9d47 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc71049f2abdeb1820dd3b43b675342ff17a4943e3a42961885e0f7d3432cd14 +size 14847 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity.meta new file mode 100644 index 00000000..9b65cdd1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_ShowTrackingReferences.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73743b10c3912094a8a17bc7ac370c15 +timeCreated: 1550629235 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity new file mode 100644 index 00000000..b67988f3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c36101ca099543026ddda58ceca38150ce27b01b0828360eecc69653796f365 +size 52553 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta new file mode 100644 index 00000000..a31ced77 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b6669fb4e4df9c48926f02b694be9d1 +timeCreated: 1437433018 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs new file mode 100644 index 00000000..6ba114f6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs @@ -0,0 +1,62 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +namespace Valve.VR.Extras +{ + [RequireComponent(typeof(SteamVR_TrackedObject))] + public class SteamVR_TestThrow : MonoBehaviour + { + public GameObject prefab; + public Rigidbody attachPoint; + + public SteamVR_Action_Boolean spawn = SteamVR_Input.GetAction("InteractUI"); + + SteamVR_Behaviour_Pose trackedObj; + FixedJoint joint; + + private void Awake() + { + trackedObj = GetComponent(); + } + + private void FixedUpdate() + { + if (joint == null && spawn.GetStateDown(trackedObj.inputSource)) + { + GameObject go = GameObject.Instantiate(prefab); + go.transform.position = attachPoint.transform.position; + + joint = go.AddComponent(); + joint.connectedBody = attachPoint; + } + else if (joint != null && spawn.GetStateUp(trackedObj.inputSource)) + { + GameObject go = joint.gameObject; + Rigidbody rigidbody = go.GetComponent(); + Object.DestroyImmediate(joint); + joint = null; + Object.Destroy(go, 15.0f); + + // We should probably apply the offset between trackedObj.transform.position + // and device.transform.pos to insert into the physics sim at the correct + // location, however, we would then want to predict ahead the visual representation + // by the same amount we are predicting our render poses. + + Transform origin = trackedObj.origin ? trackedObj.origin : trackedObj.transform.parent; + if (origin != null) + { + rigidbody.velocity = origin.TransformVector(trackedObj.GetVelocity()); + rigidbody.angularVelocity = origin.TransformVector(trackedObj.GetAngularVelocity()); + } + else + { + rigidbody.velocity = trackedObj.GetVelocity(); + rigidbody.angularVelocity = trackedObj.GetAngularVelocity(); + } + + rigidbody.maxAngularVelocity = rigidbody.angularVelocity.magnitude; + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta new file mode 100644 index 00000000..86dcfb0d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ff4f36585e15b1942827390ff1a92502 +timeCreated: 1437513988 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity new file mode 100644 index 00000000..902c6e06 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3edd46972a7f98ce7818d845bb017b9c10b895ce31dc48a3e4e0d1a95a3eebb +size 77524 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta new file mode 100644 index 00000000..3cb5fc84 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d936163b5e9a5047b5e4ba5afaf5126 +timeCreated: 1437513966 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs new file mode 100644 index 00000000..c7550cb9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs @@ -0,0 +1,86 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; + +namespace Valve.VR.Extras +{ + public class SteamVR_TestTrackedCamera : MonoBehaviour + { + public Material material; + public Transform target; + public bool undistorted = true; + public bool cropped = true; + + private void OnEnable() + { + // The video stream must be symmetrically acquired and released in + // order to properly disable the stream once there are no consumers. + SteamVR_TrackedCamera.VideoStreamTexture source = SteamVR_TrackedCamera.Source(undistorted); + source.Acquire(); + + // Auto-disable if no camera is present. + if (!source.hasCamera) + enabled = false; + } + + private void OnDisable() + { + // Clear the texture when no longer active. + material.mainTexture = null; + + // The video stream must be symmetrically acquired and released in + // order to properly disable the stream once there are no consumers. + SteamVR_TrackedCamera.VideoStreamTexture source = SteamVR_TrackedCamera.Source(undistorted); + source.Release(); + } + + private void Update() + { + SteamVR_TrackedCamera.VideoStreamTexture source = SteamVR_TrackedCamera.Source(undistorted); + Texture2D texture = source.texture; + if (texture == null) + { + return; + } + + // Apply the latest texture to the material. This must be performed + // every frame since the underlying texture is actually part of a ring + // buffer which is updated in lock-step with its associated pose. + // (You actually really only need to call any of the accessors which + // internally call Update on the SteamVR_TrackedCamera.VideoStreamTexture). + material.mainTexture = texture; + + // Adjust the height of the quad based on the aspect to keep the texels square. + float aspect = (float)texture.width / texture.height; + + // The undistorted video feed has 'bad' areas near the edges where the original + // square texture feed is stretched to undo the fisheye from the lens. + // Therefore, you'll want to crop it to the specified frameBounds to remove this. + if (cropped) + { + VRTextureBounds_t bounds = source.frameBounds; + material.mainTextureOffset = new Vector2(bounds.uMin, bounds.vMin); + + float du = bounds.uMax - bounds.uMin; + float dv = bounds.vMax - bounds.vMin; + material.mainTextureScale = new Vector2(du, dv); + + aspect *= Mathf.Abs(du / dv); + } + else + { + material.mainTextureOffset = Vector2.zero; + material.mainTextureScale = new Vector2(1, -1); + } + + target.localScale = new Vector3(1, 1.0f / aspect, 1); + + // Apply the pose that this frame was recorded at. + if (source.hasTracking) + { + SteamVR_Utils.RigidTransform rigidTransform = source.transform; + target.localPosition = rigidTransform.pos; + target.localRotation = rigidTransform.rot; + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta new file mode 100644 index 00000000..062ae1ed --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b18b36a995ecb04599f35c2741be8d5 +timeCreated: 1465946679 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat new file mode 100644 index 00000000..7a00abbd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat @@ -0,0 +1,127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SteamVR_TestTrackedCamera + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 0.5, y: -0.5} + m_Offset: {x: 0.25, y: 0.75} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta new file mode 100644 index 00000000..f8611eb8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99ee8d48ccf36264e9d9a72baa681249 +timeCreated: 1465950289 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity new file mode 100644 index 00000000..5667ae07 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af5fd1bc44adb26245c6f31511caee4e9d3edc7415f8d690a901ce441edeef04 +size 23886 diff --git a/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta new file mode 100644 index 00000000..d3eb9087 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fb811b0ffe615b4dbf1d5e6ced385fd +timeCreated: 1464227836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Icon.meta b/Projects/SteamVR/Assets/SteamVR/Icon.meta new file mode 100644 index 00000000..5c883b27 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Icon.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 37d1a399d1ea2d24c8f27e07036b83fb +folderAsset: yes +timeCreated: 1532646714 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png b/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png new file mode 100644 index 00000000..64945172 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4ee50707259442e4a01e6dc53b5ffdec52880f78a57f31bfb964f7293962d52 +size 358271 diff --git a/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png.meta b/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png.meta new file mode 100644 index 00000000..d9fef92b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Icon/SteamVR_Skeleton_Pose Icon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: a9d04296988f9324d98f54789595e5bf +timeCreated: 1547854934 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 128 + textureSettings: + filterMode: 2 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png b/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png new file mode 100644 index 00000000..ccdc4d06 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:761f314867d1d49c8f131ca3b1c2f6da61fea23664652b39b6dfd7f8c85e3f34 +size 14839 diff --git a/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png.meta b/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png.meta new file mode 100644 index 00000000..2b61e97e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Icon/_steamvr.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 200a36575873a1d40baa790e18dafe5d +timeCreated: 1532646733 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input.meta b/Projects/SteamVR/Assets/SteamVR/Input.meta new file mode 100644 index 00000000..040ce4b1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 034ad660702976d4da58a18ccae19443 +folderAsset: yes +timeCreated: 1521243381 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents.meta new file mode 100644 index 00000000..14b30dc1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 353612abd09de3a478236e679e220759 +folderAsset: yes +timeCreated: 1548282626 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs new file mode 100644 index 00000000..5cdc2e35 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs @@ -0,0 +1,9 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_BooleanEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs.meta new file mode 100644 index 00000000..4edecbac --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_BooleanEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 59250d64a1ce9a44891e9bb0b3d71e6b +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs new file mode 100644 index 00000000..63e65c50 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_PoseEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs.meta new file mode 100644 index 00000000..6d0eaae3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_PoseEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d77e49c3174e18045ab27a1029c6a977 +timeCreated: 1548282627 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs new file mode 100644 index 00000000..dde92f7a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Pose_ConnectedChangedEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs.meta new file mode 100644 index 00000000..2f2cd622 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_ConnectedChangedEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f0abecbe8a5e4e04dab8f886e1d6d070 +timeCreated: 1548282627 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs new file mode 100644 index 00000000..f720193c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Pose_DeviceIndexChangedEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs.meta new file mode 100644 index 00000000..ece70193 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_DeviceIndexChangedEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bc42b626f4ef1264ebfc0393f40df5c9 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs new file mode 100644 index 00000000..0ea99c64 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Pose_TrackingChangedEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs.meta new file mode 100644 index 00000000..c78c94ac --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Pose_TrackingChangedEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 62c981c44fe9a6046bb0766cb96bdf65 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs new file mode 100644 index 00000000..e443ad97 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_SingleEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs.meta new file mode 100644 index 00000000..987284fb --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SingleEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b8fd33c9d8ff2114a8b6a59629165318 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs new file mode 100644 index 00000000..fe0589bd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_SkeletonEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs.meta new file mode 100644 index 00000000..0a8d051a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_SkeletonEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c56ae57c82c46674ea85a60fd6ba9334 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs new file mode 100644 index 00000000..fdbcf018 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Skeleton_ConnectedChangedEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs.meta new file mode 100644 index 00000000..822700d3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_ConnectedChangedEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 431bf7eb5ceb24a448dc44a2ed8d8243 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs new file mode 100644 index 00000000..9ea02ed8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs @@ -0,0 +1,10 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Skeleton_TrackingChangedEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs.meta new file mode 100644 index 00000000..56ab1533 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Skeleton_TrackingChangedEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7461d65099840d840af0e25e6afda525 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs new file mode 100644 index 00000000..129fa64c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs @@ -0,0 +1,11 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Vector2Event : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs.meta new file mode 100644 index 00000000..edf2dd45 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector2Event.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 091545c123a858440b2e32a3f299a923 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs new file mode 100644 index 00000000..ca954be7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs @@ -0,0 +1,11 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR +{ + [Serializable] + public class SteamVR_Behaviour_Vector3Event : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs.meta new file mode 100644 index 00000000..9cd54f1a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/BehaviourUnityEvents/SteamVR_Behaviour_Vector3Event.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 99c31ec1b21aa424987b0162f9971dc6 +timeCreated: 1548282626 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor.meta new file mode 100644 index 00000000..55da5a76 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fed05885250fc2c4daab18c7df3717bf +folderAsset: yes +timeCreated: 1521243387 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin b/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin new file mode 100644 index 00000000..162e3f2e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin @@ -0,0 +1,36708 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12001, guid: 0000000000000000e000000000000000, type: 0} + m_Name: InputSkin + m_EditorClassIdentifier: + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, type: 0} + m_box: + m_Name: box + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + m_button: + m_Name: button + m_Normal: + m_Background: {fileID: -573041650897247223, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1537457205435906773, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -7527060558648309217, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8766172725880940643, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7832598784815925287, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -9059002882264723198, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -4454209017672384243, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4993635991501620529, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 4047951448802137905, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7382603045041641420, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 8556163245987529883, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8718812295543890339, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_toggle: + m_Name: toggle + m_Normal: + m_Background: {fileID: -5335821736339326178, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3713486776681669033, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5440736679484030619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4339080970778619922, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 8488476462167042113, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5916554232991449898, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6861823045970851139, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3891748276938030385, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6998870504307324776, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6892289883839395259, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -2043049995710802033, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6320351700436647650, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 2 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_label: + m_Name: label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.01960784} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.01960784} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.01960784} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textField: + m_Name: textfield + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -7902305245580594835, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7480287054991643601, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textArea: + m_Name: textarea + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -7902305245580594835, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7480287054991643601, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_window: + m_Name: window + m_Normal: + m_Background: {fileID: 3818439531036227831, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4076387637968530734, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2598339039890329406, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6169616601590876011, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 20 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 20 + m_Bottom: 5 + m_Overflow: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 8 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -18} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + m_horizontalSlider: + m_Name: horizontalslider + m_Normal: + m_Background: {fileID: -1988754956228865714, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4460686070649676949, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -7 + m_Bottom: -6 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSliderThumb: + m_Name: horizontalsliderthumb + m_Normal: + m_Background: {fileID: 533846062338790173, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5738701442736781636, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7673591263382911705, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4459256173382056359, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -9215591400962077435, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5722351392116267785, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: -4 + m_Bottom: 4 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalSlider: + m_Name: verticalslider + m_Normal: + m_Background: {fileID: 11021, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Overflow: + m_Left: -2 + m_Right: -3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalSliderThumb: + m_Name: verticalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 7 + m_Bottom: 7 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_horizontalScrollbar: + m_Name: horizontalscrollbar + m_Normal: + m_Background: {fileID: -3273041606263085236, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -311698570160889163, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarThumb: + m_Name: horizontalscrollbarthumb + m_Normal: + m_Background: {fileID: -7716058669073582569, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8639621063432762522, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarLeftButton: + m_Name: horizontalscrollbarleftbutton + m_Normal: + m_Background: {fileID: 4476514712964175617, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7917270662258052987, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 2884324555085707582, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7509333680719945740, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 17 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarRightButton: + m_Name: horizontalscrollbarrightbutton + m_Normal: + m_Background: {fileID: -1802176199048881894, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1719773835037083180, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7059179968116174260, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7510343993111087507, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 8 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 17.24739 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbar: + m_Name: verticalscrollbar + m_Normal: + m_Background: {fileID: 488918262070282077, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3927972358972204458, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarThumb: + m_Name: verticalscrollbarthumb + m_Normal: + m_Background: {fileID: 944833255956038975, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4570962278689354513, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalScrollbarUpButton: + m_Name: verticalscrollbarupbutton + m_Normal: + m_Background: {fileID: -2655953919643799188, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1797764562729272291, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7354372766510949456, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 9141456082652879494, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 8 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarDownButton: + m_Name: verticalscrollbardownbutton + m_Normal: + m_Background: {fileID: -7119383920812324710, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8460701622354431290, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -1371287000565055330, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4129062762289497750, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 8 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_ScrollView: + m_Name: scrollview + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_CustomStyles: + - m_Name: AboutWIndowLicenseLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AC LeftArrow + m_Normal: + m_Background: {fileID: -7587691099990578721, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AC RightArrow + m_Normal: + m_Background: {fileID: -1024337226193420218, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AnimationCurveEditorBackground + m_Normal: + m_Background: {fileID: -341762447361974832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2374999321026501087, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 13 + m_Right: 13 + m_Top: 16 + m_Bottom: 13 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AnimationEventBackground + m_Normal: + m_Background: {fileID: -5868217337437714234, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6122879050015153689, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AnimationEventTooltip + m_Normal: + m_Background: {fileID: -7852208213302404783, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2511073895964070237, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 30 + m_Right: -16 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: -21, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: AnimationEventTooltipArrow + m_Normal: + m_Background: {fileID: -9167016833098334808, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8341513657845387260, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 49 + m_FixedHeight: 24 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AnimationKeyframeBackground + m_Normal: + m_Background: {fileID: -7816601121424284418, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8260249902742038773, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AnimationRowEven + m_Normal: + m_Background: {fileID: 374491421478905856, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8936721907479882898, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.8509804} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7575701698941280109, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3617277517512267392, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -9063087282298208653, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4820764148609586132, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AnimationRowOdd + m_Normal: + m_Background: {fileID: -2359511589518885748, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4456092198983905368, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.8509804} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 413034330351903672, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6440014620870636398, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 4688687928543740334, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7278002905869025538, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AnimationSelectionTextField + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 3695432436834489353, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5455765869878158719, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3695432436834489353, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5455765869878158719, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AnimationTimelineTick + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.8509804} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 2} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AnimPropDropdown + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -3498961436995449270, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 930558403639363194, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -3498961436995449270, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 930558403639363194, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 22 + m_FixedHeight: 12 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AppToolbar + m_Normal: + m_Background: {fileID: 4313343300465785975, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1499310013587383990, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AS TextArea + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: AssetLabel + m_Normal: + m_Background: {fileID: 6824356191489133313, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7556872358635748795, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AssetLabel Icon + m_Normal: + m_Background: {fileID: -8218726002110163042, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1184736063055475785, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 20 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AssetLabel Partial + m_Normal: + m_Background: {fileID: 5343974186623882845, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1224326630126368371, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8431373, g: 0.8431373, b: 0.8431373, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: AudioKnobOverlay + m_Normal: + m_Background: {fileID: 8659931465441215141, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 40 + m_FixedHeight: 40 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: BoldLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5528091188132560551, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -909444403519183027, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 4 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: BoldToggle + m_Normal: + m_Background: {fileID: -5335821736339326178, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3713486776681669033, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -5440736679484030619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4339080970778619922, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6861823045970851139, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3891748276938030385, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6998870504307324776, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6892289883839395259, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 0 + m_Padding: + m_Left: 17 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ButtonLeft + m_Normal: + m_Background: {fileID: 1080316132654051920, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8815363670230388605, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4936522380543841335, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8384154977428886507, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 457438054494950428, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6443892828054172784, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2699464057150028670, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2532186331727342389, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 6394364633972837906, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3498646900132120192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnFocused: + m_Background: {fileID: -2706052385167011101, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7208910663587304332, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Border: + m_Left: 4 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ButtonMid + m_Normal: + m_Background: {fileID: 6070648720424352284, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1265553417539728264, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5918870406009897193, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7685440606253776876, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -153741487309708353, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5156600413114049605, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 3150678913057709238, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8645124270603475300, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -8289612701108538689, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6337186053203719136, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnFocused: + m_Background: {fileID: 8556163245987529883, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8718812295543890339, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ButtonRight + m_Normal: + m_Background: {fileID: 6755091527547125812, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5296761828652572468, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8246408447560300716, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 383743813688466100, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 550368101880185070, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5846300646616730590, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 6102598333325412655, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4294124052978022352, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -3498293440786961781, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5162943419627983064, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnFocused: + m_Background: {fileID: 3650798129383198048, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7210895505003786855, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Border: + m_Left: 3 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: BypassToggle + m_Normal: + m_Background: {fileID: 4395856873029979197, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 4395856873029979197, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 4395856873029979197, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 4395856873029979197, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8258058794944161541, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 8258058794944161541, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 8258058794944161541, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 8258058794944161541, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 21 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CapsuleButton + m_Normal: + m_Background: {fileID: -104420862974706142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -104420862974706142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ChannelStripAttenuationBar + m_Normal: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7426471, g: 0.7426471, b: 0.7426471, a: 1} + m_Hover: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 5796115159397303847, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ChannelStripAttenuationMarkerSquare + m_Normal: + m_Background: {fileID: 3140274644908383529, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9852941, g: 0.9852941, b: 0.9852941, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ChannelStripBg + m_Normal: + m_Background: {fileID: 5714066788390831906, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5399866385352017957, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 25 + m_Bottom: 9 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 4 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ChannelStripDuckingMarker + m_Normal: + m_Background: {fileID: -5377444150710333725, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -2429907943040615680, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 8 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ChannelStripEffectBar + m_Normal: + m_Background: {fileID: 6658556879324817063, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7426471, g: 0.7426471, b: 0.7426471, a: 1} + m_Hover: + m_Background: {fileID: 3292885302747413944, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -259268453797291196, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -2153196451104004301, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ChannelStripSendReturnBar + m_Normal: + m_Background: {fileID: -2757380720433128512, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7426471, g: 0.7426471, b: 0.7426471, a: 1} + m_Hover: + m_Background: {fileID: -4736914737866035310, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7013706465623681949, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -7976849734891269595, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ChannelStripVUMeterBg + m_Normal: + m_Background: {fileID: 7909347443896792696, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7867647, g: 0.7867647, b: 0.7867647, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 90 + m_FixedHeight: 170 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CircularToggle + m_Normal: + m_Background: {fileID: -1957759246816190516, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4950384958661662375, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 6 + m_FixedHeight: 6 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CN Box + m_Normal: + m_Background: {fileID: -2595257409002968663, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3154618545289549930, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: CN CountBadge + m_Normal: + m_Background: {fileID: -5292227847342108761, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5094833834472813587, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 8 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 20 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN EntryBackEven + m_Normal: + m_Background: {fileID: 1178275909477605523, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4178544375780113093, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN EntryBackOdd + m_Normal: + m_Background: {fileID: -6611788727337487407, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6600256529501395351, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN EntryError + m_Normal: + m_Background: {fileID: 1715859669443758926, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1715859669443758926, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN EntryInfo + m_Normal: + m_Background: {fileID: -7150409940516424707, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7150409940516424707, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN EntryWarn + m_Normal: + m_Background: {fileID: 2655493458141633029, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2655493458141633029, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CN Message + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CN StatusError + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3512397, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CN StatusInfo + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CN StatusWarn + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2007874, g: 0.1995098, b: 0.03241057, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ColorField + m_Normal: + m_Background: {fileID: -4090197485841274061, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8209559788018439225, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 2840584056934419445, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2429989549192107113, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 21 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 1 + m_Right: 19 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 1 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ColorPicker2DThumb + m_Normal: + m_Background: {fileID: 1775649822027241308, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6530535298546028080, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 8 + m_FixedHeight: 8 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ColorPickerBackground + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ColorPickerBox + m_Normal: + m_Background: {fileID: -4982604230453974774, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2116891993059866552, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 2618575936942333696, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4912788975060943424, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 4 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -2 + m_Right: -2 + m_Top: -2 + m_Bottom: -2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ColorPickerHorizThumb + m_Normal: + m_Background: {fileID: -3760968096278322537, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4212453359502124180, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 0 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 7 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ColorPickerVertThumb + m_Normal: + m_Background: {fileID: -2004902796438436480, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8389770131900364726, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 7 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 7 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Command + m_Normal: + m_Background: {fileID: 9098617087583456627, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8437431098581464219, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -3646694454039658007, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4561483919988117994, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 1112679350103597193, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2570903215823218349, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1514165940916726697, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5550738704614325523, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -1476282846181103192, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 303398120190912217, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 2801498666813434497, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5580851704787588947, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 32 + m_FixedHeight: 22 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CommandLeft + m_Normal: + m_Background: {fileID: -3773429760576054683, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1040054318233963, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 6461548173787239659, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8792053611207447096, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 1803151943204887476, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5451452650914045439, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -451867525773764754, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2765152421711556807, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6502852461363565704, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6016609707738405304, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -2063730750760791948, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6321693150935789409, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 32 + m_FixedHeight: 22 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CommandMid + m_Normal: + m_Background: {fileID: 8444680044263851207, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8989583929504970388, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5769054922516378951, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6081907532281327309, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7434189938098624518, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4513397245730076556, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4882617232270697950, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2015198269453809014, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 444798370086749822, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1010140660847344078, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 8784048507383329607, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3154064094464294101, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 32 + m_FixedHeight: 22 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: CommandRight + m_Normal: + m_Background: {fileID: -6800700917955698195, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2044865212692386932, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7811291822572464253, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8265738134570112822, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -2999278534274022380, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4869678519646540087, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1526794126671006856, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5944652982055114636, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 4922659977266736783, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5423692940197290045, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 4886722989702924565, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3091852177931561936, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 32 + m_FixedHeight: 22 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ControlHighlight + m_Normal: + m_Background: {fileID: 773284527550287420, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 17 + m_Right: 17 + m_Top: 17 + m_Bottom: 21 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 10 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ControlLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_Focused: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_OnFocused: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: CurveEditorLabelTickmarks + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: -25, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: debug_layout_box + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: dockarea + m_Normal: + m_Background: {fileID: -7634553117334943428, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6323194147161078346, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: dockareaOverlay + m_Normal: + m_Background: {fileID: 4473052360692216039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5330720255210851890, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -17 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: dockareaStandalone + m_Normal: + m_Background: {fileID: -6605872321368629319, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7540718349698078124, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6605872321368629319, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7540718349698078124, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 5 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 5 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Dopesheetkeyframe + m_Normal: + m_Background: {fileID: -726526387389776670, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7333333, g: 0.7333333, b: 0.7333333, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: dragtab + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4544868961459137463, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8080761728603923542, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 3342917791237969515, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2161580392686568961, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: dragtabbright + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 3931406764539583952, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4374963104424319165, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: dragtabdropwindow + m_Normal: + m_Background: {fileID: 428726758060094620, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5928472242591247527, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 103 + m_Right: 6 + m_Top: 20 + m_Bottom: 5 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: DropDown + m_Normal: + m_Background: {fileID: -5303125600194034958, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2558266986858468491, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2836093749670782651, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1273481667545587888, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -5493237001237682533, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6312642963678671572, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 15 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 14 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: DropDownButton + m_Normal: + m_Background: {fileID: -2315437465859441965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6064385357211126679, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -3941218825818258690, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6264735800957573080, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 20 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 22 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ErrorLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3512397, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ExposablePopupItem + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -104420862974706142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ExposablePopupMenu + m_Normal: + m_Background: {fileID: 2530269388163302210, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 12 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: EyeDropperHorizontalLine + m_Normal: + m_Background: {fileID: 5904063552244190870, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2392157, g: 0.5019608, b: 0.8745098, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2392157, g: 0.5019608, b: 0.8745098, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -2 + m_Right: -2 + m_Top: -2 + m_Bottom: -2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: EyeDropperPickedPixel + m_Normal: + m_Background: {fileID: -4547434557182929469, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2392157, g: 0.5019608, b: 0.8745098, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2392157, g: 0.5019608, b: 0.8745098, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -2 + m_Right: -2 + m_Top: -2 + m_Bottom: -2 + m_Overflow: + m_Left: 1 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: EyeDropperVerticalLine + m_Normal: + m_Background: {fileID: 1520247048926888149, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6235294, g: 0.6235294, b: 0.6235294, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2392157, g: 0.5019608, b: 0.8745098, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 2 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -2 + m_Right: -2 + m_Top: -2 + m_Bottom: -2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow background + m_Normal: + m_Background: {fileID: -4991715479178183011, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2794565159660547816, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 12 + m_Top: 12 + m_Bottom: 12 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow navbar back + m_Normal: + m_Background: {fileID: -4970594547492131370, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5115044567828785270, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow navbar button + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 4 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow navbar separator + m_Normal: + m_Background: {fileID: 2548499236019459524, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5744048618671855912, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 19 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 0 + m_Normal: + m_Background: {fileID: 3345062188058242075, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5827863044940766850, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 0 on + m_Normal: + m_Background: {fileID: -8730329270345746664, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8762578781382412968, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 1 + m_Normal: + m_Background: {fileID: -6917342493057086709, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6443262037043947688, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 1 on + m_Normal: + m_Background: {fileID: 4030603843093032447, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2515512686110766898, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 2 + m_Normal: + m_Background: {fileID: -8339830038577179030, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2686201257472486866, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 2 on + m_Normal: + m_Background: {fileID: 4596187926090263923, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 996358965380906860, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 3 + m_Normal: + m_Background: {fileID: 4232480530199348459, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3249455571219515022, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 3 on + m_Normal: + m_Background: {fileID: 9133500192264655097, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1484888512554888631, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 4 + m_Normal: + m_Background: {fileID: 1250699138367523809, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7313421473555883423, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 4 on + m_Normal: + m_Background: {fileID: 1549675274622137497, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8164268936346237007, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 5 + m_Normal: + m_Background: {fileID: -1636615289121099951, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5827462953905516160, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 5 on + m_Normal: + m_Background: {fileID: 546338495914903781, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7537201726951473618, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 6 + m_Normal: + m_Background: {fileID: -1911145763643397850, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3008199507457396204, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node 6 on + m_Normal: + m_Background: {fileID: 5047786176705579079, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 669384846585190191, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 15 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 29 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 9 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -22} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 0 + m_Normal: + m_Background: {fileID: 2263832134096364153, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2239292668721771453, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -14} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 0 on + m_Normal: + m_Background: {fileID: 5614042457431643336, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6971319233728355957, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 1 + m_Normal: + m_Background: {fileID: -7408780188034483940, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3881955134730730217, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 1 on + m_Normal: + m_Background: {fileID: 7754348663078127651, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -831317592546231575, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 2 + m_Normal: + m_Background: {fileID: -3319428042815649974, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7897926228436154009, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 2 on + m_Normal: + m_Background: {fileID: -7041368837418657988, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2753919264048264838, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 3 + m_Normal: + m_Background: {fileID: -1256874168392293720, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7524796313035247832, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 3 on + m_Normal: + m_Background: {fileID: -5509139819890413546, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3415007127033935985, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 4 + m_Normal: + m_Background: {fileID: 2257112769540372632, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3329804227794310542, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 4 on + m_Normal: + m_Background: {fileID: -8467048296594635028, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3542987160285273357, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 5 + m_Normal: + m_Background: {fileID: 2474199363243521933, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8539294320769107255, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 5 on + m_Normal: + m_Background: {fileID: 2474199363243521933, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8539294320769107255, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 6 + m_Normal: + m_Background: {fileID: 5624459724670059371, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6991866361632357077, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node hex 6 on + m_Normal: + m_Background: {fileID: -1945131375793465117, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3876139310329421165, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 25 + m_Right: 25 + m_Top: 46 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 23 + m_Top: 34 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -13} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow node titlebar + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -6 + m_Bottom: -2 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow overlay area left + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 4 + m_Top: 1 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay area right + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay box + m_Normal: + m_Background: {fileID: -6441174075247670251, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -206437034753990011, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6869422572699198721, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6780852365861806064, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 4 + m_Bottom: 14 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 9 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 3} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay foldout + m_Normal: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -4660028769088515672, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8151885268425896248, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 166140767490613455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7786529490676408977, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -3 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay header lower left + m_Normal: + m_Background: {fileID: -413498084820709360, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 360384936808687164, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 16 + m_Top: 12 + m_Bottom: 12 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 9 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 4, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 22 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay header lower right + m_Normal: + m_Background: {fileID: -5141097558840114368, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -746298526645643421, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 8 + m_Top: 12 + m_Bottom: 12 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 9 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: -4, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 22 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay header upper left + m_Normal: + m_Background: {fileID: -3688614201944305580, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4277618043693484516, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 16 + m_Top: 8 + m_Bottom: 22 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 10 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 4, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow overlay header upper right + m_Normal: + m_Background: {fileID: -1843130451300215114, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6557004469479273108, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 8 + m_Top: 8 + m_Bottom: 22 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 4 + m_Right: 4 + m_Top: -1 + m_Bottom: 10 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: -4, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow shader in 0 + m_Normal: + m_Background: {fileID: 4540086379746192421, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3436812625796589018, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader in 1 + m_Normal: + m_Background: {fileID: 4757798719262916588, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8462364837511458871, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader in 2 + m_Normal: + m_Background: {fileID: -8129888381956183133, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2829917358316073607, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader in 3 + m_Normal: + m_Background: {fileID: 7039274270353901447, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3491538372878307971, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader in 4 + m_Normal: + m_Background: {fileID: 5660422513908027323, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2532945412468851965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader in 5 + m_Normal: + m_Background: {fileID: -4611325829394277971, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -905581189872814962, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader node 0 + m_Normal: + m_Background: {fileID: -1314481871422321935, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 20 + m_Right: 20 + m_Top: 21 + m_Bottom: 20 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_Overflow: + m_Left: 9 + m_Right: 9 + m_Top: 5 + m_Bottom: 13 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader node 0 on + m_Normal: + m_Background: {fileID: -3125746798603139846, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 20 + m_Right: 20 + m_Top: 21 + m_Bottom: 20 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_Overflow: + m_Left: 9 + m_Right: 9 + m_Top: 5 + m_Bottom: 13 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 0 + m_Normal: + m_Background: {fileID: 5025235095665554900, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5967848021715700390, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 1 + m_Normal: + m_Background: {fileID: -2673713372496993598, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4557375093549069492, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 2 + m_Normal: + m_Background: {fileID: 5501254659775476590, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -576884081366076518, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 3 + m_Normal: + m_Background: {fileID: -6774306720119777717, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5153310022099364022, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 4 + m_Normal: + m_Background: {fileID: -5789048681916651460, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7301930847508347144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow shader out 5 + m_Normal: + m_Background: {fileID: -8726563988628775562, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4760494645906860059, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7843137, g: 0.7843137, b: 0.7843137, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow target in + m_Normal: + m_Background: {fileID: -5900165173691719369, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4145825715063804902, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 6626204458980183768, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7567167676799973621, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 11 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: 0 + m_Top: -6 + m_Bottom: -2 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow triggerPin in + m_Normal: + m_Background: {fileID: 4916472744035700896, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4285627175715843776, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5765433443862929739, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1194715372529775680, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 0 + m_Top: 0 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 11 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -5 + m_Bottom: -1 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow triggerPin out + m_Normal: + m_Background: {fileID: 4916472744035700896, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4285627175715843776, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5765433443862929739, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1194715372529775680, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 8 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -5 + m_Bottom: -1 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow var 0 + m_Normal: + m_Background: {fileID: 8870309076635003422, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4653970737608265386, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 0 on + m_Normal: + m_Background: {fileID: -4807760782104062569, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6010977299872365965, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 1 + m_Normal: + m_Background: {fileID: 7195352044537787973, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4910569157488205797, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 1 on + m_Normal: + m_Background: {fileID: -2847275616092532364, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7921656199199454457, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 2 + m_Normal: + m_Background: {fileID: 5645244364435933503, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 857377256345937205, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 2 on + m_Normal: + m_Background: {fileID: 2076831224113004737, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325802162411448823, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 3 + m_Normal: + m_Background: {fileID: 4738323585582179305, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1347649463276074141, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 3 on + m_Normal: + m_Background: {fileID: 4738323585582179305, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1347649463276074141, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 4 + m_Normal: + m_Background: {fileID: -3550187653296751119, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7638206959715317422, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 4 on + m_Normal: + m_Background: {fileID: 8518231896260582338, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2480996744800611739, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 5 + m_Normal: + m_Background: {fileID: -7792234371219804738, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4062272055739352537, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 5 on + m_Normal: + m_Background: {fileID: 5673809260465275621, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7337300874699973965, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 6 + m_Normal: + m_Background: {fileID: 7844591891913217369, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6592948027013707404, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow var 6 on + m_Normal: + m_Background: {fileID: 3623302790873001, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8418749806511417972, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 8 + m_Bottom: 16 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: flow varPin in + m_Normal: + m_Background: {fileID: -5900165173691719369, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4145825715063804902, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 6626204458980183768, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7567167676799973621, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 11 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: 0 + m_Top: -6 + m_Bottom: -2 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow varPin out + m_Normal: + m_Background: {fileID: -5900165173691719369, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4145825715063804902, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 6626204458980183768, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7567167676799973621, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 7 + m_Top: 0 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: -1 + m_Top: -6 + m_Bottom: -2 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 1} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: flow varPin tooltip + m_Normal: + m_Background: {fileID: -2502534701728295521, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5877437284816895451, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 18 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 18 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Foldout + m_Normal: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4660028769088515672, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8151885268425896248, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_Focused: + m_Background: {fileID: -7524398041730950906, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 164480878953057837, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_OnNormal: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 166140767490613455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7786529490676408977, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_OnFocused: + m_Background: {fileID: -7132046488310786458, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5162036400036804466, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1958281, b: 0.9029851, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 14 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: FoldOutPreDrop + m_Normal: + m_Background: {fileID: -2056841594357348428, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8923912366449195810, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2056841594357348428, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8923912366449195810, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -2056841594357348428, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8923912366449195810, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2896704960591395726, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1735468070650891286, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -2896704960591395726, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1735468070650891286, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -2896704960591395726, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1735468070650891286, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 9 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: GameViewBackground + m_Normal: + m_Background: {fileID: -8510489415617907483, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7630741337803820556, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -5440736679484030619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4339080970778619922, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 16 + m_Top: 20 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Grad Down Swatch + m_Normal: + m_Background: {fileID: -8041863566862849525, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 11 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Grad Down Swatch Overlay + m_Normal: + m_Background: {fileID: 6253863986041141562, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -310019839247936254, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 11 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Grad Up Swatch + m_Normal: + m_Background: {fileID: -1139454097201953581, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 11 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Grad Up Swatch Overlay + m_Normal: + m_Background: {fileID: 1258615952922016373, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -712767669538162931, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 11 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: grey_border + m_Normal: + m_Background: {fileID: 4573103925955609575, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8150655854846512865, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4573103925955609575, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8150655854846512865, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: GridList + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: GridListText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 1 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: GridToggle + m_Normal: + m_Background: {fileID: -8585001212188792119, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5337334534200065775, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: GroupBox + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: GUIEditor.BreadcrumbLeft + m_Normal: + m_Background: {fileID: -8730859949539617441, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3607839988326647129, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2909435724611740479, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 658594365626841568, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 11 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 6 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: GUIEditor.BreadcrumbMid + m_Normal: + m_Background: {fileID: 298390163510713244, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5694940394960273964, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4917697211602105510, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 2726902712204841013, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 5 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: GV Gizmo DropDown + m_Normal: + m_Background: {fileID: -752904529894253385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5253075710881487743, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 189772666361559878, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2173399788653303655, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6459847986512787764, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4296449023890478020, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 2461170193767426834, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3349035155257258242, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 2 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: HeaderLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1975806, g: 0.1975806, b: 0.1975806, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5528091188132560551, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -909444403519183027, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: HelpBox + m_Normal: + m_Background: {fileID: 2845149559452096714, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7580867879848406109, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.8193277} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Hi Label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: HorizontalMinMaxScrollbarThumb + m_Normal: + m_Background: {fileID: -290968029561743681, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4787443868772713218, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 17 + m_Right: 17 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 13 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: hostview + m_Normal: + m_Background: {fileID: 6724798188879376339, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 111451986053079254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: IN BigTitle + m_Normal: + m_Background: {fileID: -1546782194512641569, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -46930508347621619, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 6 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 5 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: IN BigTitle Inner + m_Normal: + m_Background: {fileID: -1057368265428512106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -201571992192508696, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: IN ColorField + m_Normal: + m_Background: {fileID: -812910700720646357, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325720374017928266, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -812910700720646357, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325720374017928266, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 20 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 20 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN DropDown + m_Normal: + m_Background: {fileID: 6432062611799678106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3434988488096692011, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6432062611799678106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3434988488096692011, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN Foldout + m_Normal: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -4660028769088515672, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8151885268425896248, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 166140767490613455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7786529490676408977, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN FoldoutStatic + m_Normal: + m_Background: {fileID: -8803814024050117606, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 5 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: IN Label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 1000 + m_Right: 1000 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN LockButton + m_Normal: + m_Background: {fileID: 4307262231531160263, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 759442393906369088, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5086211328477402282, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1059949266555804021, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8573496925750814923, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2126667427525963558, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -7897204666009843010, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 353647762689210058, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 11 + m_FixedHeight: 11 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN ObjectField + m_Normal: + m_Background: {fileID: -5082760455748368059, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4766287079758127514, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 9209294886531542839, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2785174994156271118, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 7897930409605242659, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -386309564771737576, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 9 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN Popup + m_Normal: + m_Background: {fileID: 5984150310391570731, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3101846411414637764, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -3810507759653758115, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4471379059099780327, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 5984150310391570731, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3101846411414637764, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: -4 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN RenderLayer + m_Normal: + m_Background: {fileID: -7816925670449780976, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -5426032363720578497, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -3 + m_Right: -7 + m_Top: -5 + m_Bottom: -7 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN SelectedLine + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN TextField + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 3695432436834489353, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5455765869878158719, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 2 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN ThumbnailSelection + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5086211328477402282, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1059949266555804021, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 682408271021017549, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1144218933821137960, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -7897204666009843010, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 353647762689210058, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Overflow: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN ThumbnailShadow + m_Normal: + m_Background: {fileID: -9203537401436773534, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2001874535633546383, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5086211328477402282, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1059949266555804021, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 639900025265681100, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6646124123416009356, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -7897204666009843010, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 353647762689210058, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 13 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 5 + m_Right: 5 + m_Top: 4 + m_Bottom: 7 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN Title + m_Normal: + m_Background: {fileID: -4750106681349864266, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -2958128380992246952, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 9081910962604014461, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.01960784} + m_OnNormal: + m_Background: {fileID: -2281997086050884425, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -7332516747124816509, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -7366127056356058987, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 17 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN TitleText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 10 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -2 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 16 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: IN Toggle + m_Normal: + m_Background: {fileID: -5335821736339326178, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3713486776681669033, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -5440736679484030619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4339080970778619922, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6861823045970851139, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3891748276938030385, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6998870504307324776, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6892289883839395259, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: InnerShadowBg + m_Normal: + m_Background: {fileID: -932141208677282663, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 18 + m_Bottom: 13 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: InvisibleButton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 7141846354423560264, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1059251340818821418, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: LargeButton + m_Normal: + m_Background: {fileID: 9098617087583456627, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8437431098581464219, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -3646694454039658007, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4561483919988117994, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 1112679350103597193, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2570903215823218349, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1514165940916726697, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5550738704614325523, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -1476282846181103192, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 303398120190912217, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 2801498666813434497, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5580851704787588947, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 3 + m_Bottom: 5 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeButtonLeft + m_Normal: + m_Background: {fileID: -3773429760576054683, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1040054318233963, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 6461548173787239659, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8792053611207447096, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -451867525773764754, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2765152421711556807, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6502852461363565704, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6016609707738405304, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -2063730750760791948, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6321693150935789409, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 5 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeButtonMid + m_Normal: + m_Background: {fileID: 8444680044263851207, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8989583929504970388, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5769054922516378951, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6081907532281327309, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4882617232270697950, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2015198269453809014, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 444798370086749822, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1010140660847344078, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 8784048507383329607, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3154064094464294101, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 3 + m_Bottom: 5 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeButtonRight + m_Normal: + m_Background: {fileID: -6800700917955698195, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2044865212692386932, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7811291822572464253, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8265738134570112822, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1526794126671006856, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5944652982055114636, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 4922659977266736783, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5423692940197290045, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 4886722989702924565, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3091852177931561936, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 3 + m_Bottom: 5 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeDropDown + m_Normal: + m_Background: {fileID: 3912820518799004109, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -118209646402361881, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5887224003169795508, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3552647538390795676, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -7016671167754749358, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4581242312832995143, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 8 + m_Right: 20 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 22 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.9215686} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargePopup + m_Normal: + m_Background: {fileID: -8345912896263407840, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5493484741070087440, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5149342751528911413, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3679901838642926622, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -3442352892010545559, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7243050505154905010, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 15 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 8 + m_Right: 20 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 22 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LargeTextField + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -7902305245580594835, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7480287054991643601, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LightmapEditorSelectedHighlight + m_Normal: + m_Background: {fileID: -2652425517893464619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2067746106889934527, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 0.9} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 12 + m_Bottom: 12 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 6 + m_Bottom: 8 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ListToggle + m_Normal: + m_Background: {fileID: 2194530426377794274, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2926557588462045600, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LockedHeaderBackground + m_Normal: + m_Background: {fileID: -1057368265428512106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -201571992192508696, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 9 + m_Bottom: 7 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 8 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: LockedHeaderButton + m_Normal: + m_Background: {fileID: 9174848017576406294, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7880894930752635503, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 2042164503421941483, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3938767805292685015, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -8506201462524866144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8661060100133785790, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 7078730568609329855, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8878537229563829057, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LockedHeaderLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: LODBlackBox + m_Normal: + m_Background: {fileID: 7977687820518168867, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5485393018245863947, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODCameraLine + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODLevelNotifyText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 23 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODRendererAddButton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.207975, g: 0.207975, b: 0.207975, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODRendererButton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.207975, g: 0.207975, b: 0.207975, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 8 + m_FontStyle: 1 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODRendererRemove + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.207975, g: 0.207975, b: 0.207975, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3113438, g: 0.3113438, b: 0.3113438, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODRenderersText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSceneText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.03261665, g: 0, b: 0.1865672, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSliderBG + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSliderRange + m_Normal: + m_Background: {fileID: -2359511589518885748, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4456092198983905368, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSliderRangeSelected + m_Normal: + m_Background: {fileID: 4688687928543740334, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7278002905869025538, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSliderText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: LODSliderTextSelected + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.5583776, g: 0.5583776, b: 0.5583776, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 10 + m_FontStyle: 1 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeBlendBackground + m_Normal: + m_Background: {fileID: 1620143232695162444, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 40 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeBlendPosition + m_Normal: + m_Background: {fileID: -100588520139401749, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 42 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MeBlendTriangleLeft + m_Normal: + m_Background: {fileID: 4951656592238461245, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -1688606012619459439, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 39 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeBlendTriangleRight + m_Normal: + m_Background: {fileID: 7585179492307861213, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 1119010600465142744, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 1119010600465142744, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 39 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeLivePlayBackground + m_Normal: + m_Background: {fileID: -1536412041479412971, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 2 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 8 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeLivePlayBar + m_Normal: + m_Background: {fileID: -2414848800092521047, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 8 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MenuItem + m_Normal: + m_Background: {fileID: 3884095062680598941, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 1678980009296092453, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 6601989201777618656, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 4244735934458640236, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 22 + m_Right: 22 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MenuItemMixed + m_Normal: + m_Background: {fileID: 3884095062680598941, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 1678980009296092453, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: -7094664119203073558, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 7187358428145299138, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 22 + m_Right: 22 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTimeLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.2941177} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3530912618750262034, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6880140850126897188, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: MeTransBGOver + m_Normal: + m_Background: {fileID: -4801927166921955187, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 132 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransitionBack + m_Normal: + m_Background: {fileID: 959454675090728928, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 132 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransitionBlock + m_Normal: + m_Background: {fileID: 5013179985844716968, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.119403, g: 0.119403, b: 0.119403, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransitionHandleLeft + m_Normal: + m_Background: {fileID: 9113586437046121706, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 13 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MeTransitionHandleLeftPrev + m_Normal: + m_Background: {fileID: 9090557478362330208, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 13 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MeTransitionHandleRight + m_Normal: + m_Background: {fileID: -8013711655658189010, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 13 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MeTransitionHead + m_Normal: + m_Background: {fileID: 4390070742948087887, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransitionSelect + m_Normal: + m_Background: {fileID: -6228392593066534812, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: MeTransitionSelectHead + m_Normal: + m_Background: {fileID: 9199909782796068161, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: MeTransOff2On + m_Normal: + m_Background: {fileID: -5639627763921108269, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransOffLeft + m_Normal: + m_Background: {fileID: -6841398542477984465, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransOffRight + m_Normal: + m_Background: {fileID: -2172089431629625387, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransOn2Off + m_Normal: + m_Background: {fileID: -2161250581285508002, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransOnLeft + m_Normal: + m_Background: {fileID: -5492387925295329042, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 3 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransOnRight + m_Normal: + m_Background: {fileID: 7307709257114380110, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.6862745, g: 0.6862745, b: 0.6862745, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 33 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MeTransPlayhead + m_Normal: + m_Background: {fileID: -2882451899492250788, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3530912618750262034, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6880140850126897188, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniBoldLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 4 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: minibutton + m_Normal: + m_Background: {fileID: 9174848017576406294, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7880894930752635503, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 2042164503421941483, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3938767805292685015, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 5545807618286735392, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3493559629167172052, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -8506201462524866144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8661060100133785790, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 7078730568609329855, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8878537229563829057, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: -6693280131558331537, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8452110749383601975, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: minibuttonleft + m_Normal: + m_Background: {fileID: -8895800549191456393, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2202443985434538662, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -6860678659902836986, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4391449354072616404, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6501005588685005220, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5000750399082794512, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1517621658630232625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4618371977677221104, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -2990468140421947431, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8528397727848317247, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: -4177588530525238377, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1433657015744826333, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: minibuttonmid + m_Normal: + m_Background: {fileID: 136263117181185360, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2571017026670245301, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8681007879299057485, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1593424520836297633, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7959317226575336109, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3593497551231396268, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2092926333555356862, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2196402057171405789, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -1204190679768939792, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3295321319581573270, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 9005285760313435121, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4716149326305941893, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: minibuttonright + m_Normal: + m_Background: {fileID: -6973417629754500713, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4725170987686655274, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 4733536967041026804, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2294019996652133422, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 8088019775601203743, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4654519820063235169, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -489111210457363021, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2750014788346212476, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -5791451207932357315, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4951332905527522768, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: -4589341703714172385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4837345545419500814, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniLabelRight + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniMinMaxSliderHorizontal + m_Normal: + m_Background: {fileID: -431169932305854349, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6434072319321431673, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: -5 + m_Bottom: -4 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniMinMaxSliderVertical + m_Normal: + m_Background: {fileID: -2562093760483937475, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1372193486211048628, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: -5 + m_Right: -4 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniPopup + m_Normal: + m_Background: {fileID: -5766891875766568439, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2841556713966769835, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7771899354616978403, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5514509476436795230, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -1399925296573305653, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 9124133785863074411, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniPullDown + m_Normal: + m_Background: {fileID: -7655743461927396663, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2448977156283891725, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -994918931069285218, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4482615547014143188, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -5168973161722461162, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3584531142127120891, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniPullDownLeft + m_Normal: + m_Background: {fileID: -8917027500356205495, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 86118798288041636, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -58969595754554509, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5603900222744599164, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 2857219473421035161, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8654212650589278810, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 6 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniSliderHorizontal + m_Normal: + m_Background: {fileID: 1314617167224190907, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: -5 + m_Bottom: -4 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniSliderVertical + m_Normal: + m_Background: {fileID: -5252674265772398155, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: -5 + m_Right: -4 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniTextField + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 1 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: MiniToolbarButton + m_Normal: + m_Background: {fileID: -5207888601925974466, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -5691593857178425238, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniToolbarButtonLeft + m_Normal: + m_Background: {fileID: -5207888601925974466, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -5691593857178425238, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MiniToolbarPopup + m_Normal: + m_Background: {fileID: -1567158217291676450, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 3981085730608371631, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MinMaxHorizontalSliderThumb + m_Normal: + m_Background: {fileID: 2239002581368989096, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8633509826046212349, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 672779776385521089, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5179256072514126706, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: -4 + m_Bottom: 4 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: MuteToggle + m_Normal: + m_Background: {fileID: 7506753645954630052, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 7506753645954630052, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7506753645954630052, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7506753645954630052, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -460794171852134987, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -460794171852134987, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -460794171852134987, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -460794171852134987, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 21 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: NotificationBackground + m_Normal: + m_Background: {fileID: 6083469233733858383, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4013029624546647648, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.8509804} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 16 + m_Top: 16 + m_Bottom: 16 + m_Margin: + m_Left: 30 + m_Right: 30 + m_Top: 30 + m_Bottom: 30 + m_Padding: + m_Left: 40 + m_Right: 40 + m_Top: 40 + m_Bottom: 40 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3060225861842836289, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: NotificationText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 16 + m_Top: 16 + m_Bottom: 16 + m_Margin: + m_Left: 30 + m_Right: 30 + m_Top: 30 + m_Bottom: 30 + m_Padding: + m_Left: 40 + m_Right: 40 + m_Top: 40 + m_Bottom: 40 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3060225861842836289, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectField + m_Normal: + m_Background: {fileID: 5306377892023789964, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8912621710645867590, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3892371311108292947, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6921456712676022293, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1775951482195446200, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3672084828865219179, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 23 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 3 + m_Right: 20 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ObjectFieldMiniThumb + m_Normal: + m_Background: {fileID: -4869207544785599640, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 5880330074065321483, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3259074145611069802, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 257659028193691308, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 18 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 32 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectFieldThumb + m_Normal: + m_Background: {fileID: 6195845723091580647, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1390317079189681835, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6999716289424499287, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4957256518229502775, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 6999716289424499287, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4957256518229502775, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ObjectFieldThumbOverlay + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectFieldThumbOverlay2 + m_Normal: + m_Background: {fileID: -2324842369324437952, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6133067256284759332, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 31 + m_Top: 0 + m_Bottom: 16 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 3 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: -24 + m_Right: -1 + m_Top: 0 + m_Bottom: -1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 8 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerBackground + m_Normal: + m_Background: {fileID: -3788104686929986237, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3179292129411778548, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.7761194, g: 0.7761194, b: 0.7761194, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerGroupHeader + m_Normal: + m_Background: {fileID: -2359511589518885748, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4456092198983905368, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 4688687928543740334, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7278002905869025538, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerLargeStatus + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 6 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerPreviewBackground + m_Normal: + m_Background: {fileID: 7001268526759109792, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8524252210751793654, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerResultsEven + m_Normal: + m_Background: {fileID: 374491421478905856, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8936721907479882898, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -9063087282298208653, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4820764148609586132, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8507463, g: 0.8507463, b: 0.8507463, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerResultsGrid + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8955224, g: 0.8955224, b: 0.8955224, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8941177, g: 0.8941177, b: 0.8941177, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerResultsGridLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9960784, g: 0.9960784, b: 0.9960784, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9960784, g: 0.9960784, b: 0.9960784, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9960784, g: 0.9960784, b: 0.9960784, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerResultsOdd + m_Normal: + m_Background: {fileID: -2359511589518885748, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4456092198983905368, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 4688687928543740334, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7278002905869025538, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerSmallStatus + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerTab + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 926110337355896144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4687880156384109442, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 926110337355896144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4687880156384109442, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ObjectPickerToolbar + m_Normal: + m_Background: {fileID: -1998699353846966862, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4565861673617453983, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL box + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: OL box NoExpand + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: OL Elem + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 23 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL EntryBackEven + m_Normal: + m_Background: {fileID: 1178275909477605523, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4178544375780113093, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL EntryBackOdd + m_Normal: + m_Background: {fileID: -6611788727337487407, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6600256529501395351, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1960784, g: 0.1960784, b: 0.1960784, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL header + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1975806, g: 0.1975806, b: 0.1975806, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5528091188132560551, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -909444403519183027, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 6 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Minus + m_Normal: + m_Background: {fileID: -6668816640785016826, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3274932366654819320, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 203382942361623751, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2898368428444734071, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 12 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -2 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Plus + m_Normal: + m_Background: {fileID: 9153059873348083557, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2449692599772184233, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 8985168620527967181, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2357466829944239512, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 12 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -2 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL TextField + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Title + m_Normal: + m_Background: {fileID: -2739426759134481697, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3258980622299754735, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -781368934292900214, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5374113187747573347, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7463833834269931113, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3090524706116675127, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 1185636534370563106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8275802511072822811, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Title TextRight + m_Normal: + m_Background: {fileID: -2739426759134481697, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3258980622299754735, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -781368934292900214, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5374113187747573347, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7463833834269931113, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3090524706116675127, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 1185636534370563106, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8275802511072822811, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Titleleft + m_Normal: + m_Background: {fileID: -637633729003216110, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1605633353943527326, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 2341636511579499374, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -129933795276114859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2200735711397687966, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3792315100251779234, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6836196646792532826, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7344419836785201414, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Titlemid + m_Normal: + m_Background: {fileID: 1394353564632097192, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3465383197961133689, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 4195874802834177404, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 772373673835339874, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5822954677491247714, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4686975991002070575, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -8218649994057356200, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7446911167362112217, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Titleright + m_Normal: + m_Background: {fileID: 1066225423152057455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5992302419585761730, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1008065, g: 0.1008065, b: 0.1008065, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 1746060894875378854, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7600013242061459823, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5290122243553889356, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8544716032690213408, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -886551060069181655, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8844410545995250675, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL Toggle + m_Normal: + m_Background: {fileID: 7253322878060337455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5075410950115692059, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -5877171035508978005, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8694804862120574616, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5414643929027669543, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2485984399690040926, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -3378323864551032856, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4607241161893721107, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 12 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -2 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: OL ToggleWhite + m_Normal: + m_Background: {fileID: -5326764445725527867, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5932795431218873382, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 2547330211477130346, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7447504510490047733, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -321084682220334132, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7691300347235045874, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 6278906469060087929, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6262573206366898365, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 12 + m_Right: 0 + m_Top: 12 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -2 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PaneOptions + m_Normal: + m_Background: {fileID: 2708824800493199966, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6233966323708569787, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 11 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PlayerSettingsLevel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PlayerSettingsPlatform + m_Normal: + m_Background: {fileID: -4811691087537865639, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4811691087537865639, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Padding: + m_Left: 42 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Popup + m_Normal: + m_Background: {fileID: -5408205171073931357, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2490003079660139324, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4469117276355265030, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8105699852937509043, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 15 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 6 + m_Right: 14 + m_Top: 2 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PopupBackground + m_Normal: + m_Background: {fileID: 7977687820518168867, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5485393018245863947, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PopupCurveDropdown + m_Normal: + m_Background: {fileID: 5743722335770374059, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4636270284229015360, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.7333333, g: 0.7333333, b: 0.7333333, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PopupCurveEditorBackground + m_Normal: + m_Background: {fileID: 7977687820518168867, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5485393018245863947, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PopupCurveEditorSwatch + m_Normal: + m_Background: {fileID: -3973930495159453876, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8531877963306960974, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PopupCurveSwatchBackground + m_Normal: + m_Background: {fileID: -685672140601229974, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3807349651723462507, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.7333333, g: 0.7333333, b: 0.7333333, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR BrokenPrefabLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 1} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 1} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR DigDownArrow + m_Normal: + m_Background: {fileID: 2962887378638105053, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 4359121422943346846, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -2 + m_Top: -2 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PR DisabledBrokenPrefabLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 0.6} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 0.6} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 0.6} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.2509804, g: 0.05098039, b: 0.05098039, a: 0.6} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 0.6} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 0.6} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 0.6} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 0.7137255, b: 0.7137255, a: 0.6} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR DisabledLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.6} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.6} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.6} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 0.6} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.6} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.6} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.6} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.6} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR DisabledPrefabLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 0.6} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 0.6} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 0.6} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 0.6} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 0.6} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 0.6} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 0.6} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 0.6} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR Insertion + m_Normal: + m_Background: {fileID: -5197095626509473278, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5696416129334667175, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 6 + m_Right: 0 + m_Top: -12 + m_Bottom: 12 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 8 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR Insertion Above + m_Normal: + m_Background: {fileID: -5197095626509473278, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5696416129334667175, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 2 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 6 + m_Right: 0 + m_Top: 4 + m_Bottom: -4 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 8 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR Label + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.9} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR Ping + m_Normal: + m_Background: {fileID: 6213669389590737800, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -642441261182090059, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.9} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 5 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR PrefabLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 1} + m_Hover: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 1} + m_Active: + m_Background: {fileID: -8004600993325020351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4531217250587526478, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 1} + m_Focused: + m_Background: {fileID: 6114084012503912583, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5159826817137499563, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0.1529412, b: 0.5137255, a: 1} + m_OnNormal: + m_Background: {fileID: 8064387584920209410, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5956635400113544197, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.6745098, g: 0.7647059, b: 1, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 8 + m_Bottom: 8 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: PR TextField + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3695432436834489353, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5455765869878158719, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreBackground + m_Normal: + m_Background: {fileID: -8510489415617907483, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7630741337803820556, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 16 + m_Right: 16 + m_Top: 20 + m_Bottom: 10 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreButton + m_Normal: + m_Background: {fileID: 1350811191632198258, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 220179252528831962, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.8445379} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 7158502414344979414, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5257837603960458765, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 9171223375443588216, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8825209946492082896, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 7158502414344979414, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5257837603960458765, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreDropDown + m_Normal: + m_Background: {fileID: 3746778274885917440, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 7264573792176270962, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6815133982058558604, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 7264573792176270962, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 2 + m_Right: 11 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreferencesKeysElement + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 2} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreferencesSection + m_Normal: + m_Background: {fileID: -4811691087537865639, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4811691087537865639, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 5 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreferencesSectionBox + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: PreHorizontalScrollbar + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 8 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreHorizontalScrollbarThumb + m_Normal: + m_Background: {fileID: 3945076868180525298, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2941048812752965354, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreOverlayLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreSlider + m_Normal: + m_Background: {fileID: 3931787746312372454, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4033072063580758869, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8697479, g: 0.8697479, b: 0.8697479, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -7 + m_Bottom: -5 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreSliderThumb + m_Normal: + m_Background: {fileID: -243871211682115806, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2296318638795049077, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8697479, g: 0.8697479, b: 0.8697479, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -4 + m_Bottom: -1 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreToolbar + m_Normal: + m_Background: {fileID: -2576367469998695440, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5505661605005245198, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.8697479, g: 0.8697479, b: 0.8697479, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7208521129837364216, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4372133548713762431, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2576367469998695440, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5505661605005245198, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -7208521129837364216, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4372133548713762431, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreToolbar2 + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8697479, g: 0.8697479, b: 0.8697479, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4578175391476221472, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4079268416371779544, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -4578175391476221472, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4079268416371779544, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreVerticalScrollbar + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 8 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: PreVerticalScrollbarThumb + m_Normal: + m_Background: {fileID: -7924315179004762782, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7535944517026228026, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 5 + m_Bottom: 7 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 8 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProfilerBadge + m_Normal: + m_Background: {fileID: -674514151301517983, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 252362594236452944, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ProfilerLeftPane + m_Normal: + m_Background: {fileID: -3886800699518575594, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1262089289383217937, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7739718911229004224, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2861150232504714310, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 50 + m_Right: 3 + m_Top: 13 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + - m_Name: ProfilerLeftPaneOverlay + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 2277139399022061105, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7877270845730737058, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 2277139399022061105, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7877270845730737058, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 40 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + - m_Name: ProfilerPaneLeftBackground + m_Normal: + m_Background: {fileID: -8444480986034363385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 1448631605112803387, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + - m_Name: ProfilerPaneSubLabel + m_Normal: + m_Background: {fileID: 5630025067347494750, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7126772180132475689, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 12 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: -4 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 11 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProfilerRightPane + m_Normal: + m_Background: {fileID: -7932753358935034755, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2783972441228467324, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -5698396519632392808, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2026896902924521105, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProfilerScrollviewBackground + m_Normal: + m_Background: {fileID: -341762447361974832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2374999321026501087, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 13 + m_Right: 13 + m_Top: 16 + m_Bottom: 13 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -160 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProfilerSelectedLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProfilerTimelineBar + m_Normal: + m_Background: {fileID: 8508823314916540865, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 8508823314916540865, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 8508823314916540865, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 5545807618286735392, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3493559629167172052, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -8506201462524866144, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8661060100133785790, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 7078730568609329855, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8878537229563829057, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: -6693280131558331537, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8452110749383601975, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProfilerTimelineFoldout + m_Normal: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -4660028769088515672, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8151885268425896248, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: -3169759088934609965, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5146377680766036859, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 166140767490613455, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7786529490676408977, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: -3291784817565280993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3648207651762151017, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 2 + m_Bottom: -1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProfilerTimelineLeftPane + m_Normal: + m_Background: {fileID: -3886800699518575594, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1262089289383217937, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7739718911229004224, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2861150232504714310, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 3 + m_Top: 4 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + - m_Name: ProgressBarBack + m_Normal: + m_Background: {fileID: 3262792639726449503, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1368617102824623415, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ProgressBarBar + m_Normal: + m_Background: {fileID: 4914472245283442168, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2603712597802087762, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ProgressBarText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ProjectBrowserBottomBarBg + m_Normal: + m_Background: {fileID: -7534259249680964811, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9921569, g: 0.9921569, b: 0.9921569, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserGridLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8251284530780814601, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9921569, g: 0.9921569, b: 0.9921569, a: 1} + m_OnHover: + m_Background: {fileID: -754830272912864468, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnActive: + m_Background: {fileID: -754830272912864468, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnFocused: + m_Background: {fileID: -754830272912864468, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 3 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProjectBrowserHeaderBgMiddle + m_Normal: + m_Background: {fileID: 379221616895759543, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9921569, g: 0.9921569, b: 0.9921569, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProjectBrowserHeaderBgTop + m_Normal: + m_Background: {fileID: 1207797449824739058, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9921569, g: 0.9921569, b: 0.9921569, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ProjectBrowserIconAreaBg + m_Normal: + m_Background: {fileID: 8477472853372924405, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserIconDropShadow + m_Normal: + m_Background: {fileID: 7521090244005078151, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2727789639295773114, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -5948791998434975626, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserPreviewBg + m_Normal: + m_Background: {fileID: -7567498616864308183, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetBg + m_Normal: + m_Background: {fileID: -1893447772220209498, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetBgCloseEnded + m_Normal: + m_Background: {fileID: -7195902004640624855, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetBgDivider + m_Normal: + m_Background: {fileID: -8004073508713016461, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetBgMiddle + m_Normal: + m_Background: {fileID: -1878720456393189266, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetBgOpenEnded + m_Normal: + m_Background: {fileID: 3398375956905085532, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserSubAssetExpandBtn + m_Normal: + m_Background: {fileID: 5384518758785649545, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 5384518758785649545, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4087831006004620954, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 4087831006004620954, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserTextureIconDropShadow + m_Normal: + m_Background: {fileID: -6272110685175122832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6272110685175122832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -6272110685175122832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 5 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ProjectBrowserTopBarBg + m_Normal: + m_Background: {fileID: 4284679893348600371, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9921569, g: 0.9921569, b: 0.9921569, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9882353, g: 0.9882353, b: 0.9882353, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: QualitySettingsDefault + m_Normal: + m_Background: {fileID: 3330941069740306283, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -3 + m_Right: -7 + m_Top: -5 + m_Bottom: -7 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Radio + m_Normal: + m_Background: {fileID: 3243321240896732753, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6758251315884837720, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 8477698978415849723, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7086950071995964074, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6641359889208000149, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -635369314431336625, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 1619118937638523318, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6207364931437473942, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 15 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -3 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: RegionBg + m_Normal: + m_Background: {fileID: 1840687699928693038, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 13 + m_Right: 13 + m_Top: 21 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 21 + m_Bottom: 12 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 13, y: 8} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: RightLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: RL Background + m_Normal: + m_Background: {fileID: 3094889842989577616, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 6 + m_Right: 3 + m_Top: 0 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: RL DragHandle + m_Normal: + m_Background: {fileID: -126394901853745249, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2384689258714412383, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.04147058, g: 0.04147058, b: 0.04147058, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 6 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: RL Element + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: -5193758048584019022, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 7516798493847391269, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 7516798493847391269, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 7516798493847391269, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: RL Footer + m_Normal: + m_Background: {fileID: -5145904889709520074, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8666667, g: 0.8666667, b: 0.8666667, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: RL FooterButton + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8666667, g: 0.8666667, b: 0.8666667, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1019608, g: 0.1019608, b: 0.1019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -3 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 17 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: RL Header + m_Normal: + m_Background: {fileID: 2222539610708135272, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.06911764, g: 0.06911764, b: 0.06911764, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.705, g: 0.705, b: 0.705, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: SC ViewAxisLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -2} + m_FixedWidth: 16 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SC ViewLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SceneViewOverlayTransparentBackground + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ScriptText + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: SearchCancelButton + m_Normal: + m_Background: {fileID: 1153446836801096815, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7714649789019723958, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -281654002684227717, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 5649203124873772435, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: SearchCancelButtonEmpty + m_Normal: + m_Background: {fileID: -3806537407343805325, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8035137269735350195, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 17 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: SearchModeFilter + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4171755510625345187, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4171755510625345187, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 5 + m_Right: 5 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 4 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 22 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SearchTextField + m_Normal: + m_Background: {fileID: -5042367405998179000, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 636442192265881444, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 1} + m_Focused: + m_Background: {fileID: 3092076054260386351, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 65780041746005352, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 17 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 2 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 22 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SelectionRect + m_Normal: + m_Background: {fileID: -6175662131787910117, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 6958856236699155959, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ServerChangeCount + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.77} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 10 + m_Right: 4 + m_Top: 0 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ServerUpdateChangeset + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.77} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 5 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ServerUpdateChangesetOn + m_Normal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 0.7686275} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 5 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ServerUpdateInfo + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.77} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ServerUpdateLog + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.77} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 1 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenCheckMark + m_Normal: + m_Background: {fileID: 3318348314945837494, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2647590436712583010, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6916408723868451661, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -2} + m_FixedWidth: 12 + m_FixedHeight: 12 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ShurikenDropdown + m_Normal: + m_Background: {fileID: 3044801888528572303, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -3159784075041641215, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 12 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenEffectBg + m_Normal: + m_Background: {fileID: 723116081914356016, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ShurikenEmitterTitle + m_Normal: + m_Background: {fileID: 9052436608502042656, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -6363468258816935393, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1435328834647793881, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 4511260394262049460, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 29 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 45 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -14} + m_FixedWidth: 0 + m_FixedHeight: 28 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1119403, g: 0.1119403, b: 0.1119403, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1960784, b: 0.9019608, a: 1} + m_Focused: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1960784, b: 0.9019608, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1960784, b: 0.9019608, a: 1} + m_OnFocused: + m_Background: {fileID: 3696117970163896625, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0.1960784, b: 0.9019608, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ShurikenLine + m_Normal: + m_Background: {fileID: 3381633319493019231, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 1 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenMinus + m_Normal: + m_Background: {fileID: -6001608033915994942, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -2} + m_FixedWidth: 6 + m_FixedHeight: 6 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ShurikenModuleBg + m_Normal: + m_Background: {fileID: 1403076739959127816, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 7 + m_Bottom: 7 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 30, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: ShurikenModuleTitle + m_Normal: + m_Background: {fileID: -8113901939514164966, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -8595873466764858183, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -824563352729931199, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -317040030820564571, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 16, y: -2} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenObjectField + m_Normal: + m_Background: {fileID: 4124436459019367320, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 7822651026986780041, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 17 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 19 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenPlus + m_Normal: + m_Background: {fileID: -5376709531629362174, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 6 + m_FixedHeight: 6 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ShurikenPopup + m_Normal: + m_Background: {fileID: -8942314304384318107, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 5068892456856896308, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 10 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 12 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ShurikenToggle + m_Normal: + m_Background: {fileID: 3536811880156362063, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 7261936099302295014, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 7261936099302295014, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4972162790581285333, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -2332575812925122075, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: -2332575812925122075, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 6 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ShurikenValue + m_Normal: + m_Background: {fileID: -8114404417976001359, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 833718397405499261, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 0 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SimplePopup + m_Normal: + m_Background: {fileID: -1867390463475385885, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -1867390463475385885, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 9 + m_Top: 1 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 2 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: SliderMixed + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: -1 + m_FixedHeight: -1 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: SoloToggle + m_Normal: + m_Background: {fileID: -2643858270892318411, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -2643858270892318411, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2643858270892318411, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -2643858270892318411, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2524167592855427142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 2524167592855427142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 2524167592855427142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 2524167592855427142, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 21 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: StaticDropdown + m_Normal: + m_Background: {fileID: 3330941069740306283, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.77} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -7 + m_Bottom: -2 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: sv_iconselector_back + m_Normal: + m_Background: {fileID: -8759786513751719754, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6689408360908506174, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -8759786513751719754, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6689408360908506174, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: sv_iconselector_button + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: sv_iconselector_labelselection + m_Normal: + m_Background: {fileID: 8282683022238804769, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4825491897312346137, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 8282683022238804769, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4825491897312346137, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: sv_iconselector_selection + m_Normal: + m_Background: {fileID: 5980657527770481894, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -9097484517477644712, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5980657527770481894, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -9097484517477644712, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: sv_iconselector_sep + m_Normal: + m_Background: {fileID: 960651902464285215, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2553107865340798884, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 960651902464285215, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2553107865340798884, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 3 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_0 + m_Normal: + m_Background: {fileID: 7250588514170254948, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 7250588514170254948, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_1 + m_Normal: + m_Background: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_2 + m_Normal: + m_Background: {fileID: 419385456094870383, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 419385456094870383, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_3 + m_Normal: + m_Background: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 419385456094870383, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_4 + m_Normal: + m_Background: {fileID: 5721338939258241955, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5721338939258241955, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_5 + m_Normal: + m_Background: {fileID: 2974397684917235467, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2974397684917235467, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_6 + m_Normal: + m_Background: {fileID: 5132851093641282708, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5132851093641282708, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: sv_label_7 + m_Normal: + m_Background: {fileID: -1412012063857583412, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -1412012063857583412, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 9 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TabWindowBackground + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Tag MenuItem + m_Normal: + m_Background: {fileID: 6724798188879376339, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 111451986053079254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Active: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -174692938186236039, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -6325308991929043192, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Tag TextField + m_Normal: + m_Background: {fileID: 6824356191489133313, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7556872358635748795, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Tag TextField Button + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Tag TextField Empty + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 2 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TE NodeBackground + m_Normal: + m_Background: {fileID: -341762447361974832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2374999321026501087, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 12 + m_Right: 12 + m_Top: 12 + m_Bottom: 12 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TE NodeBox + m_Normal: + m_Background: {fileID: 6562966305447815163, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 10 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 9 + m_Bottom: 17 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -14} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TE NodeBoxSelected + m_Normal: + m_Background: {fileID: 794900632753118932, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 24 + m_Right: 24 + m_Top: 10 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Overflow: + m_Left: 12 + m_Right: 12 + m_Top: 9 + m_Bottom: 17 + m_Font: {fileID: -9142270697591305147, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: -14} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TE NodeLabelBot + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.7843137} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 8 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TE NodeLabelTop + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 0.7843137} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 2 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TE PinLabel + m_Normal: + m_Background: {fileID: 6626204458980183768, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7567167676799973621, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 8 + m_FixedHeight: 4 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TE Toolbar + m_Normal: + m_Background: {fileID: 2133734017690824248, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4781069571569260939, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TE toolbarbutton + m_Normal: + m_Background: {fileID: 9068781835104926632, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2973952051660201824, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 8493631499948866061, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7808821854865841697, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6309649621493563145, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -145822298680236780, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -984941480587451815, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 873608116239150953, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TE ToolbarDropDown + m_Normal: + m_Background: {fileID: -5946686598143573609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2165222771204264267, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -6382128683509723619, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5194924146697278403, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TextFieldDropDown + m_Normal: + m_Background: {fileID: -8674671441739955047, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 2641137480487405741, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 4819311029488115136, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 4 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TextFieldDropDownText + m_Normal: + m_Background: {fileID: -7107494609865159550, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TimeScrubber + m_Normal: + m_Background: {fileID: 6165646413920163968, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 11 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 10 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TimeScrubberButton + m_Normal: + m_Background: {fileID: 880600624506180710, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -6880140850126897188, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -3530912618750262034, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6880140850126897188, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 33 + m_FixedHeight: 21 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL BaseStateLogicBarOverlay + m_Normal: + m_Background: {fileID: 867818110894564813, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3960784, g: 0.7215686, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.3955224, g: 0.7210104, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL EndPoint + m_Normal: + m_Background: {fileID: -3190088584755928595, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL InPoint + m_Normal: + m_Background: {fileID: 1591034099846739817, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 9 + m_Right: -9 + m_Top: -1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL ItemTitle + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LeftColumn + m_Normal: + m_Background: {fileID: 3290320656260127665, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LeftItem + m_Normal: + m_Background: {fileID: -7256992380189208501, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2669125958324354033, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LogicBar 0 + m_Normal: + m_Background: {fileID: -141422684766808012, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.4392157, g: 0.5764706, b: 0.7490196, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 4140842045677982713, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4140842045677982713, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 1 + m_Top: 2 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LogicBar 1 + m_Normal: + m_Background: {fileID: -5712471651268629969, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2779997896192074778, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1254902, g: 1, b: 0.3411765, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -2779997896192074778, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.1268657, g: 1, b: 0.3405699, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 1 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LogicBar parentgrey + m_Normal: + m_Background: {fileID: -1686857705045657087, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL LoopSection + m_Normal: + m_Background: {fileID: 2237405001062643465, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 5 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL OutPoint + m_Normal: + m_Background: {fileID: -6932142903349500398, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 9 + m_FixedHeight: 16 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL Playhead + m_Normal: + m_Background: {fileID: -8528819723447756777, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3046190413580310055, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 4140842045677982713, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: -7 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL Range Overlay + m_Normal: + m_Background: {fileID: -623777303198990490, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TL RightLine + m_Normal: + m_Background: {fileID: -9026329996988517560, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL Selection H1 + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 18 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 25 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL Selection H2 + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 18 + m_Bottom: 11 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionBarCloseButton + m_Normal: + m_Background: {fileID: -806715274194353122, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8470588, g: 0.8470588, b: 0.8470588, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7255659613214398614, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 31 + m_FixedHeight: 31 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionBarPreview + m_Normal: + m_Background: {fileID: -4114245286053926853, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8470588, g: 0.8470588, b: 0.8470588, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionBarText + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8470588, g: 0.8470588, b: 0.8470588, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 5 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionButton + m_Normal: + m_Background: {fileID: -1131914765668377802, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 8791931616493512796, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 5 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionButton PreDropGlow + m_Normal: + m_Background: {fileID: -1602323612814087775, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 11 + m_Right: 11 + m_Top: 11 + m_Bottom: 11 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 7 + m_Right: 7 + m_Top: 7 + m_Bottom: 7 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionButtonName + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7450981, g: 0.7450981, b: 0.7450981, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL SelectionButtonNew + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.8470588, g: 0.8470588, b: 0.8470588, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: TL tab left + m_Normal: + m_Background: {fileID: 3421330900175643746, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -4203426862670409490, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -6069483797825011343, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6585841008002454969, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 8 + m_Right: 8 + m_Top: 4 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TL tab mid + m_Normal: + m_Background: {fileID: 524241455430578972, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3136432167497816668, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5823525177616098382, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -6707679873840891373, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 9 + m_Right: 9 + m_Top: 4 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TL tab plus left + m_Normal: + m_Background: {fileID: -674214798778152487, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -2243734596294298001, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 21 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TL tab plus right + m_Normal: + m_Background: {fileID: 5281057846503836016, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3700318982564273626, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 3 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 21 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: TL tab right + m_Normal: + m_Background: {fileID: 7050074148804758163, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 6438300233617414875, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7723318268910739473, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: -2428854595429831224, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 9 + m_Right: 10 + m_Top: 4 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 21 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ToggleMixed + m_Normal: + m_Background: {fileID: 5714350254458304630, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 206458977164387291, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 3901401115834199372, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4346149004446792378, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 5998756791051845322, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2682844014192059576, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 5714350254458304630, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 206458977164387291, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 3901401115834199372, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -4346149004446792378, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 5998756791051845322, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2682844014192059576, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 13 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 15 + m_Right: 3 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: 2 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Toolbar + m_Normal: + m_Background: {fileID: -8748538222344408585, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7824384121118321531, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -1} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: toolbarbutton + m_Normal: + m_Background: {fileID: 6029984632204043670, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 74436786853797440, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -1089754296853649291, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 3970304467737598455, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 6309649621493563145, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -145822298680236780, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: -984941480587451815, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 873608116239150953, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ToolbarDropDown + m_Normal: + m_Background: {fileID: 208224623009839701, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7647855507928192355, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 5911070404752228832, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7072251527911526879, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ToolbarPopup + m_Normal: + m_Background: {fileID: -25369699679472599, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -7378836120237226051, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: -3788585578228885461, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5265942143808528175, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 12 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 18 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ToolbarSeachCancelButton + m_Normal: + m_Background: {fileID: -3451398671104148073, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -3237954756973630405, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7318122186452053164, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4026479050567273157, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3377772676857797360, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2882403977837257666, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 14 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ToolbarSeachCancelButtonEmpty + m_Normal: + m_Background: {fileID: -267529291006661227, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 7535155161986760908, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7318122186452053164, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 4026479050567273157, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 2 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 14 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 14 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ToolbarSeachTextField + m_Normal: + m_Background: {fileID: 5536387647129856127, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1780675812689368935, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3377772676857797360, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2882403977837257666, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 2 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ToolbarSeachTextFieldPopup + m_Normal: + m_Background: {fileID: 3886108115689711771, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8934587885489594926, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: -4191597436125002046, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -5890484065508444716, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 16 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 2 + m_Right: 0 + m_Top: 2 + m_Bottom: 0 + m_Padding: + m_Left: 16 + m_Right: 0 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: ToolbarSearchField + m_Normal: + m_Background: {fileID: 5536387647129856127, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -1780675812689368935, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 3377772676857797360, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2882403977837257666, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 15 + m_Right: 14 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 5 + m_Right: 5 + m_Top: 2 + m_Bottom: 1 + m_Padding: + m_Left: 17 + m_Right: 17 + m_Top: 2 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: ToolbarTextField + m_Normal: + m_Background: {fileID: 2597227618725028271, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2355377567497197369, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 1 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Tooltip + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.createRect + m_Normal: + m_Background: {fileID: -3523734132713086516, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.dragDot + m_Normal: + m_Background: {fileID: 5382817295167241883, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 10 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.dragDotActive + m_Normal: + m_Background: {fileID: 8889901539490732676, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 10 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.dragDotDimmed + m_Normal: + m_Background: {fileID: 5487260287801598998, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 10 + m_FixedHeight: 10 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.pivotDot + m_Normal: + m_Background: {fileID: -4454984800559177240, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: U2D.pivotDotActive + m_Normal: + m_Background: {fileID: -7346624300586097497, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 16 + m_FixedHeight: 16 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: VCS_StickyNote + m_Normal: + m_Background: {fileID: 1896154900761346321, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 1 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 0 + m_Bottom: 2 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: VCS_StickyNoteArrow + m_Normal: + m_Background: {fileID: -2329137992670565757, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 14 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: VCS_StickyNoteLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 4 + m_Right: 10 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 3 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: VCS_StickyNoteP4 + m_Normal: + m_Background: {fileID: -8094030825707286382, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 64 + m_FixedHeight: 64 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: VerticalMinMaxScrollbarThumb + m_Normal: + m_Background: {fileID: 4668188277986876311, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -2802237198867370132, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 17 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 13 + m_Bottom: 13 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: VisibilityToggle + m_Normal: + m_Background: {fileID: -8612809770818944968, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -7566948067701445177, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: -1 + m_Right: 1 + m_Top: -2 + m_Bottom: 2 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 13 + m_FixedHeight: 11 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WarningOverlay + m_Normal: + m_Background: {fileID: 9031297498810265056, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9783818, g: 0.9302434, b: 0.4922391, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 13 + m_Right: 13 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 20 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WhiteBoldLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 6 + m_Bottom: 4 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WhiteLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3459068928204737762, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WhiteLargeLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 2 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: -2914059783256359354, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WhiteMiniLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WinBtnClose + m_Normal: + m_Background: {fileID: 5692466967435527465, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -7077406281445691259, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 4409593125144712530, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnCloseActiveMac + m_Normal: + m_Background: {fileID: -2647372364481843609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -2647372364481843609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -2647372364481843609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnCloseMac + m_Normal: + m_Background: {fileID: -1865134730797294769, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -2647372364481843609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -2647372364481843609, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnInactiveMac + m_Normal: + m_Background: {fileID: 7621731839674880053, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMax + m_Normal: + m_Background: {fileID: -4734577261032170469, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -4383857938172547286, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -995509754105182210, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMaxActiveMac + m_Normal: + m_Background: {fileID: -3103808070141201385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -3103808070141201385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 882304349240534922, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -3103808070141201385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMaxMac + m_Normal: + m_Background: {fileID: 882304349240534922, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -3103808070141201385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 882304349240534922, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: -3103808070141201385, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMin + m_Normal: + m_Background: {fileID: -5092529253694260721, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: -2578909454360712222, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: -7301325722770485025, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMinActiveMac + m_Normal: + m_Background: {fileID: 1803803539938898449, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 1803803539938898449, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 7922649496294028999, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 1803803539938898449, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WinBtnMinMac + m_Normal: + m_Background: {fileID: 7922649496294028999, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 1803803539938898449, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 7922649496294028999, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 1803803539938898449, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: WindowBackground + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_Overflow: + m_Left: 1 + m_Right: 1 + m_Top: 1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: WindowBottomResize + m_Normal: + m_Background: {fileID: -126394901853745249, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 2384689258714412383, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 4028824154787511821, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 7 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 6 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Wizard Box + m_Normal: + m_Background: {fileID: 2575269581626704993, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: -8126836811217315462, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: -4058938869769607538, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: + - {fileID: 8090951618676473254, guid: 0000000000000000d000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 2 + m_Right: 17 + m_Top: 2 + m_Bottom: 17 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 1 + m_Top: 0 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 1 + - m_Name: Wizard Error + m_Normal: + m_Background: {fileID: 1715859669443758926, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 1715859669443758926, guid: 0000000000000000d000000000000000, + type: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 30 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 32 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 32 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WordWrapLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WordWrappedLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WordWrappedMiniLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 3 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 3021071571035331536, guid: 0000000000000000d000000000000000, + type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: WrappedLabel + m_Normal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_ScaledBackgrounds: [] + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_Settings: + m_DoubleClickSelectsWord: 1 + m_TripleClickSelectsLine: 1 + m_CursorColor: {r: 0, g: 0, b: 0, a: 1} + m_CursorFlashSpeed: 0 + m_SelectionColor: {r: 0.2392157, g: 0.5019608, b: 0.8745099, a: 0.65} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin.meta new file mode 100644 index 00000000..0f94fc7a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/InputSkin.guiskin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7836f978f062019499564a455654e74a +timeCreated: 1521247191 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources.meta new file mode 100644 index 00000000..0fc5fc6c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7d5e740d15d7ca249b884d30ff558bc1 +folderAsset: yes +timeCreated: 1547747995 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons.meta new file mode 100644 index 00000000..07a5d6b9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 16f1e3ee1a373e34ea3a84a7afa0a259 +folderAsset: yes +timeCreated: 1547747995 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png new file mode 100644 index 00000000..22003a43 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c212341f76f6e80d9708407aa2fb8a1a61baae22839bde6412020dc09e47551 +size 1430 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png.meta new file mode 100644 index 00000000..ad565f6c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: aa701b1f3ae438e469d0ad4f122a0633 +timeCreated: 1547747996 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png new file mode 100644 index 00000000..87eb2c6b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59600911c39c3a3e4f003009bdd807642838d71f0211b51e17889b1a1377305f +size 1439 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png.meta new file mode 100644 index 00000000..05c8e7ff --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 2f8721c3878282b44bd0c8a689d4788c +timeCreated: 1547747995 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png new file mode 100644 index 00000000..67d51f42 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ac6509d56aa6caafe1747c0e1d588238935417c1f74e442843324c4355b9c7 +size 1523 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png.meta new file mode 100644 index 00000000..1c8f40af --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 426d721c1fc5bfa418c79dc808856464 +timeCreated: 1547747995 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png new file mode 100644 index 00000000..9f069171 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2b3da599a5714147abfe154e7e2955ddf7f35e65847fba7df97cf853035a459 +size 9742 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png.meta new file mode 100644 index 00000000..6a844196 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 1e898a11a01f33d4a80b04e98158023a +timeCreated: 1547857461 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png new file mode 100644 index 00000000..2198f390 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a8bb93b2aab97e0059e9c9a3d52f9260e1a538c9cc2433ae47314a7a74f2a7 +size 9779 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png.meta new file mode 100644 index 00000000..48f4cd10 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 985915d4db439114797fb72a46387d71 +timeCreated: 1547857461 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png new file mode 100644 index 00000000..7be4ac53 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71a1360032721cac6528b68591bb00ea5f1ff9b4859b38daf8f81b5906d5f978 +size 8109 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png.meta new file mode 100644 index 00000000..45579e75 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: d1f34261d4655bc4cb5413868ae9bee2 +timeCreated: 1547765671 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png new file mode 100644 index 00000000..9c4d0005 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c50c208daba11123abc1f4d93540c0f7a18532dc72acc24e49d998bd97754ea3 +size 6244 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png.meta new file mode 100644 index 00000000..3c221c77 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 2c4294febb4dfe54d98c37083da7a639 +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png new file mode 100644 index 00000000..dc81ca1a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ee6da3c35d7ee4198846c0c6e2e799e866eed7e648bd5cc3e51e7963c329be1 +size 6287 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png.meta new file mode 100644 index 00000000..289db654 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 0f57642ec96c82446a79c525bb70b018 +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png new file mode 100644 index 00000000..b5821866 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:375b25737821bd794282d5b6c5a3d70082c1adf377216670fbe2efb2329951e2 +size 6164 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png.meta new file mode 100644 index 00000000..9ab1adf4 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: e0a60ab44553a7f4ca994dec64351d08 +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png new file mode 100644 index 00000000..cd05f0ba --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbca163caa5e4922a7bfbc3266cadf4da7bf9f9cc605d15b6cbb487a277b3252 +size 5949 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png.meta new file mode 100644 index 00000000..ffd36ec3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 4fb892aabe590ec4fb65a57a048a093f +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png new file mode 100644 index 00000000..55b5a6e5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6601d46467c2ff9b4a00e67af09997eb1bb54c92c02b935b4c7df2828f41a7a9 +size 6100 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png.meta new file mode 100644 index 00000000..3a5337fd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: c3b3083cc66322049822d98fa4c15fd6 +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png new file mode 100644 index 00000000..d2bbd448 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8d053575a3635cb74f3485432e461b3167c3e3266f1102c2dcec2fddb895a89 +size 6539 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png.meta new file mode 100644 index 00000000..0c621abb --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 764dada5864e19440bb07e24e684e950 +timeCreated: 1547765602 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs new file mode 100644 index 00000000..617c88a5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs @@ -0,0 +1,62 @@ +using UnityEngine; +using System.Collections; +using UnityEditor; +using System; +using System.Linq; +using System.IO; + +namespace Valve.VR +{ + public class SteamVR_CopyExampleInputFiles : Editor + { + public const string steamVRInputExampleJSONCopiedKey = "SteamVR_Input_CopiedExamples"; + + public const string exampleJSONFolderParent = "Input"; + public const string exampleJSONFolderName = "ExampleJSON"; + + [UnityEditor.Callbacks.DidReloadScripts] + private static void OnReloadScripts() + { + SteamVR_Input.CheckOldLocation(); + CopyFiles(); + } + + public static void CopyFiles(bool force = false) + { + bool hasCopied = EditorPrefs.GetBool(steamVRInputExampleJSONCopiedKey, false); + if (hasCopied == false || force == true) + { + string actionsFilePath = SteamVR_Input.GetActionsFilePath(); + bool exists = File.Exists(actionsFilePath); + if (exists == false) + { + string steamVRFolder = SteamVR.GetSteamVRFolderPath(); + string exampleLocation = Path.Combine(steamVRFolder, exampleJSONFolderParent); + string exampleFolderPath = Path.Combine(exampleLocation, exampleJSONFolderName); + + string streamingAssetsPath = SteamVR_Input.GetActionsFileFolder(); + + string[] files = Directory.GetFiles(exampleFolderPath, "*.json"); + foreach (string file in files) + { + string filename = Path.GetFileName(file); + + string newPath = Path.Combine(streamingAssetsPath, filename); + + try + { + File.Copy(file, newPath, false); + Debug.Log("[SteamVR] Copied example input JSON to path: " + newPath); + } + catch + { + Debug.LogError("[SteamVR] Could not copy file: " + file + " to path: " + newPath); + } + } + + EditorPrefs.SetBool(steamVRInputExampleJSONCopiedKey, true); + } + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs.meta new file mode 100644 index 00000000..341bd1ce --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_CopyExampleInputFiles.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 806facaa17de95d4794b0acbbad1268d +timeCreated: 1528159292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs new file mode 100644 index 00000000..8fe9af23 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs @@ -0,0 +1,879 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEngine; +using Valve.Newtonsoft.Json; + +namespace Valve.VR +{ + public class SteamVR_Input_ActionManifest_Manager : AssetPostprocessor + { + private static bool importing = false; + + static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + if (importing) + return; + + importing = true; + + Dictionary> partials = ScanForPartials(); + if (partials != null) + { + foreach (var element in partials) + { + if (element.Value != null && element.Value.Count > 0 && element.Value[0].imported == false) + ConfirmImport(element.Value); + } + } + + importing = false; + } + + public const string partialManifestFilename = "steamvr_partial_manifest.json"; + public static void CreatePartial(string name, int version, bool overwriteOld, bool removeUnused) + { + if (SteamVR_Input.actionFile.action_sets.Any(set => set.name == "default")) + { + bool confirm = EditorUtility.DisplayDialog("Confirmation", "We don't recommend you create a partial binding manifest with an action set named 'default'. There will often be collisions with existing actions. Are you sure you want to continue creating this partial binding manifest?", "Create", "Cancel"); + if (confirm == false) + return; + } + + + string folderName = "SteamVR_" + SteamVR_Input_ActionFile.GetCodeFriendlyName(name); + + string directorySeparatorChar = System.IO.Path.DirectorySeparatorChar.ToString(); + + string mainFolderPath = string.Format("{0}", folderName); + string versionFolderPath = string.Format("{1}{0}{2}", directorySeparatorChar, folderName, version.ToString()); + string manifestPath = string.Format("{1}{0}{2}{0}{3}", directorySeparatorChar, folderName, version.ToString(), partialManifestFilename); + + if (Directory.Exists(mainFolderPath) == false) + { + Directory.CreateDirectory(mainFolderPath); + } + + if (Directory.Exists(versionFolderPath) == false) + { + Directory.CreateDirectory(versionFolderPath); + } + + + SteamVR_PartialInputBindings partial = new SteamVR_PartialInputBindings(); + partial.name = name; + partial.version = version; + partial.overwriteOld = overwriteOld; + partial.removeUnused = removeUnused; + + + string jsonText = JsonConvert.SerializeObject(partial, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + if (File.Exists(manifestPath)) + { + FileInfo manifestFile = new FileInfo(manifestPath); + manifestFile.IsReadOnly = false; + } + + File.WriteAllText(manifestPath, jsonText); + + SteamVR_Input.actionFile.CopyFilesToPath(versionFolderPath, true); + + EditorUtility.RevealInFinder(mainFolderPath); + } + + protected static string FindLanguageInDictionary(Dictionary dictionary) + { + foreach (var localizationMember in dictionary) + { + if (localizationMember.Key == SteamVR_Input_ActionFile_LocalizationItem.languageTagKeyName) + return localizationMember.Value; + } + + return null; + } + + protected static int ImportLocalization(SteamVR_Input_ActionFile currentActionsFile, SteamVR_Input_ActionFile newActionsFile, SteamVR_PartialInputBindings partialBinding) + { + int count = 0; + + foreach (var newLocalDictionary in newActionsFile.localization) + { + string newLanguage = FindLanguageInDictionary(newLocalDictionary); + + if (string.IsNullOrEmpty(newLanguage)) + { + Debug.LogError("[SteamVR Input] Localization entry in partial actions file is missing a language tag: " + partialBinding.path); + continue; + } + + int currentLanguage = -1; + for (int currentLanguageIndex = 0; currentLanguageIndex < currentActionsFile.localization.Count; currentLanguageIndex++) + { + string language = FindLanguageInDictionary(currentActionsFile.localization[currentLanguageIndex]); + if (newLanguage == language) + { + currentLanguage = currentLanguageIndex; + break; + } + } + + if (currentLanguage == -1) + { + Dictionary newDictionary = new Dictionary(); + foreach (var element in newLocalDictionary) + { + newDictionary.Add(element.Key, element.Value); + count++; + } + + currentActionsFile.localization.Add(newDictionary); + } + else + { + foreach (var element in newLocalDictionary) + { + Dictionary currentDictionary = currentActionsFile.localization[currentLanguage]; + bool exists = currentDictionary.Any(inCurrent => inCurrent.Key == element.Key); + + if (exists) + { + //todo: should we overwrite? + currentDictionary[element.Key] = element.Value; + } + else + { + currentDictionary.Add(element.Key, element.Value); + count++; + } + } + } + } + + return count; + } + + protected static int ImportActionSets(SteamVR_Input_ActionFile currentActionsFile, SteamVR_Input_ActionFile newActionsFile) + { + int count = 0; + + foreach (var newSet in newActionsFile.action_sets) + { + if (currentActionsFile.action_sets.Any(setInCurrent => newSet.name == setInCurrent.name) == false) + { + currentActionsFile.action_sets.Add(newSet.GetCopy()); + count++; + } + } + + return count; + } + + protected static int ImportActions(SteamVR_Input_ActionFile currentActionsFile, SteamVR_Input_ActionFile newActionsFile) + { + int count = 0; + + foreach (var newAction in newActionsFile.actions) + { + if (currentActionsFile.actions.Any(actionInCurrent => newAction.name == actionInCurrent.name) == false) + { + currentActionsFile.actions.Add(newAction.GetCopy()); + count++; + } + else + { + SteamVR_Input_ActionFile_Action existingAction = currentActionsFile.actions.First(actionInCurrent => newAction.name == actionInCurrent.name); + + //todo: better merge? should we overwrite? + existingAction.type = newAction.type; + existingAction.scope = newAction.scope; + existingAction.skeleton = newAction.skeleton; + existingAction.requirement = newAction.requirement; + } + } + + return count; + } + + protected static SteamVR_Input_BindingFile GetBindingFileObject(string path) + { + if (File.Exists(path) == false) + { + Debug.LogError("[SteamVR] Could not access file at path: " + path); + return null; + } + + string jsonText = File.ReadAllText(path); + + SteamVR_Input_BindingFile importingBindingFile = JsonConvert.DeserializeObject(jsonText); + + return importingBindingFile; + } + + + protected static void WriteBindingFileObject(SteamVR_Input_BindingFile currentBindingFile, string currentBindingPath) + { + if (File.Exists(currentBindingPath)) + { + FileInfo fileInfo = new FileInfo(currentBindingPath); + fileInfo.IsReadOnly = false; + } + + string newJSON = JsonConvert.SerializeObject(currentBindingFile, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + File.WriteAllText(currentBindingPath, newJSON); + + Debug.Log("[SteamVR] Added action bindings to: " + currentBindingPath); + } + + protected static void ImportBindings(SteamVR_Input_ActionFile currentActionsFile, SteamVR_Input_ActionFile newActionsFile, string directory) + { + foreach (var newDefaultPath in newActionsFile.default_bindings) + { + if (currentActionsFile.default_bindings.Any(currentDefaultPath => newDefaultPath.controller_type == currentDefaultPath.controller_type) == false) + { + currentActionsFile.default_bindings.Add(newDefaultPath.GetCopy()); + + string bindingPath = Path.Combine(directory, newDefaultPath.binding_url); + File.Copy(bindingPath, newDefaultPath.binding_url); + } + else + { + string currentBindingDirectory = SteamVR_Input.GetActionsFileFolder(); + string currentBindingPath = currentActionsFile.default_bindings.First(binding => binding.controller_type == newDefaultPath.controller_type).binding_url; + currentBindingPath = Path.Combine(currentBindingDirectory, currentBindingPath); + + SteamVR_Input_BindingFile currentBindingFile = GetBindingFileObject(currentBindingPath); + if (currentBindingFile == null) + { + Debug.LogError("[SteamVR] There was an error deserializing the binding at path: " + currentBindingPath); + continue; + } + + SteamVR_Input_BindingFile importingBindingFile = GetBindingFileObject(Path.Combine(directory, newDefaultPath.binding_url)); + if (importingBindingFile == null) + { + Debug.LogError("[SteamVR] There was an error deserializing the binding at path: " + Path.Combine(directory, newDefaultPath.binding_url)); + continue; + } + + bool changed = false; + + foreach (var importingActionList in importingBindingFile.bindings) + { + if (currentBindingFile.bindings.Any(binding => binding.Key == importingActionList.Key)) + { + var currentSetBinding = currentBindingFile.bindings.FirstOrDefault(binding => binding.Key == importingActionList.Key); + + //todo: better merge? if we don't have an exact copy of the item then we add a new one + + foreach (var importingChord in importingActionList.Value.chords) + { + if (currentSetBinding.Value.chords.Any(currentChord => importingChord.Equals(currentChord)) == false) + { + changed = true; + currentSetBinding.Value.chords.Add(importingChord); + } + } + + foreach (var importingHaptic in importingActionList.Value.haptics) + { + if (currentSetBinding.Value.haptics.Any(currentHaptic => importingHaptic.Equals(currentHaptic)) == false) + { + changed = true; + currentSetBinding.Value.haptics.Add(importingHaptic); + } + } + + foreach (var importingPose in importingActionList.Value.poses) + { + if (currentSetBinding.Value.poses.Any(currentPose => importingPose.Equals(currentPose)) == false) + { + changed = true; + currentSetBinding.Value.poses.Add(importingPose); + } + } + + foreach (var importingSkeleton in importingActionList.Value.skeleton) + { + if (currentSetBinding.Value.skeleton.Any(currentSkeleton => importingSkeleton.Equals(currentSkeleton)) == false) + { + changed = true; + currentSetBinding.Value.skeleton.Add(importingSkeleton); + } + } + + foreach (var importingSource in importingActionList.Value.sources) + { + if (currentSetBinding.Value.sources.Any(currentSource => importingSource.Equals(currentSource)) == false) + { + changed = true; + currentSetBinding.Value.sources.Add(importingSource); + } + } + } + else + { + changed = true; + currentBindingFile.bindings.Add(importingActionList.Key, importingActionList.Value); + } + } + + if (changed) + { + WriteBindingFileObject(currentBindingFile, currentBindingPath); + } + } + } + } + + public static void CleanBindings(bool verbose = false) + { + SteamVR_Input.InitializeFile(true); + SteamVR_Input_ActionFile currentActionsFile = SteamVR_Input.actionFile; + + for (int localizationIndex = 0; localizationIndex < currentActionsFile.localization.Count; localizationIndex++) + { + Dictionary dictionary = currentActionsFile.localization[localizationIndex]; + bool removed; + do + { + removed = false; + string missingAction = null; + foreach (string key in dictionary.Keys) + { + if (key == SteamVR_Input_ActionFile_LocalizationItem.languageTagKeyName) + continue; + + if (currentActionsFile.actions.Any(action => string.Equals(action.name, key, StringComparison.CurrentCultureIgnoreCase)) == false) + { + missingAction = key; + } + } + + if (missingAction != null) + { + removed = true; + dictionary.Remove(missingAction); + if (verbose) + Debug.Log("[SteamVR Input] Removing localization entry for: " + missingAction); + } + } while (removed); + } + + for (int bindingIndex = 0; bindingIndex < currentActionsFile.default_bindings.Count; bindingIndex++) + { + SteamVR_Input_ActionFile_DefaultBinding currentBinding = currentActionsFile.default_bindings[bindingIndex]; + + string bindingPath = Path.Combine(SteamVR_Input.GetActionsFileFolder(), currentBinding.binding_url); + if (File.Exists(bindingPath) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] Removing binding entry for missing file: '" + currentBinding.controller_type + "' at: " + bindingPath); + + currentActionsFile.default_bindings.RemoveAt(bindingIndex); + bindingIndex--; + continue; + } + + SteamVR_Input_BindingFile bindingFile = GetBindingFileObject(bindingPath); + if (bindingFile == null) + { + Debug.LogError("[SteamVR Input] Error parsing binding file for: '" + currentBinding.controller_type + "' at: " + bindingPath); + continue; + } + + int changed = 0; + + foreach (var actionList in bindingFile.bindings) + { + for (int itemIndex = 0; itemIndex < actionList.Value.chords.Count; itemIndex++) + { + string outputActionPath = actionList.Value.chords[itemIndex].output; + if (currentActionsFile.actions.Any(action => string.Equals(action.name, outputActionPath, StringComparison.CurrentCultureIgnoreCase)) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] " + currentBinding.controller_type + ": Removing chord binding for action: " + outputActionPath); + + actionList.Value.chords.RemoveAt(itemIndex); + itemIndex--; + changed++; + } + } + + for (int itemIndex = 0; itemIndex < actionList.Value.haptics.Count; itemIndex++) + { + string outputActionPath = actionList.Value.haptics[itemIndex].output; + if (currentActionsFile.actions.Any(action => string.Equals(action.name, outputActionPath, StringComparison.CurrentCultureIgnoreCase)) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] " + currentBinding.controller_type + ": Removing haptics binding for action: " + outputActionPath); + + actionList.Value.haptics.RemoveAt(itemIndex); + itemIndex--; + changed++; + } + } + + for (int itemIndex = 0; itemIndex < actionList.Value.poses.Count; itemIndex++) + { + string outputActionPath = actionList.Value.poses[itemIndex].output; + if (currentActionsFile.actions.Any(action => string.Equals(action.name, outputActionPath, StringComparison.CurrentCultureIgnoreCase)) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] " + currentBinding.controller_type + ": Removing pose binding for action: " + outputActionPath); + + actionList.Value.poses.RemoveAt(itemIndex); + itemIndex--; + changed++; + } + } + + for (int itemIndex = 0; itemIndex < actionList.Value.skeleton.Count; itemIndex++) + { + string outputActionPath = actionList.Value.skeleton[itemIndex].output; + if (currentActionsFile.actions.Any(action => string.Equals(action.name, outputActionPath, StringComparison.CurrentCultureIgnoreCase)) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] " + currentBinding.controller_type + ": Removing skeleton binding for action: " + outputActionPath); + + actionList.Value.skeleton.RemoveAt(itemIndex); + itemIndex--; + changed++; + } + } + + for (int itemIndex = 0; itemIndex < actionList.Value.sources.Count; itemIndex++) + { + string outputActionPath = actionList.Value.sources[itemIndex].GetOutput(); + if (currentActionsFile.actions.Any(action => string.Equals(action.name, outputActionPath, StringComparison.CurrentCultureIgnoreCase)) == false) + { + if (verbose) + Debug.Log("[SteamVR Input] " + currentBinding.controller_type + ": Removing source binding for action: " + outputActionPath); + + actionList.Value.sources.RemoveAt(itemIndex); + itemIndex--; + changed++; + } + } + } + + if (changed > 0) + { + WriteBindingFileObject(bindingFile, bindingPath); + } + } + + if (SteamVR_Input.HasFileInMemoryBeenModified()) + { + SteamVR_Input.actionFile.Save(SteamVR_Input.GetActionsFilePath()); + + if (verbose) + Debug.Log("[SteamVR Input] Saved new actions file: " + SteamVR_Input.GetActionsFilePath()); + } + } + + + protected static void ImportPartialBinding(SteamVR_PartialInputBindings partialBinding) + { + SteamVR_Input.InitializeFile(); + SteamVR_Input_ActionFile currentActionsFile = SteamVR_Input.actionFile; + + SteamVR_Input_ActionFile newActionsFile = ReadJson(partialBinding.GetActionsPath()); + + /* + int sets = ImportActionSets(currentActionsFile, newActionsFile); + int locs = ImportLocalization(currentActionsFile, newActionsFile, partialBinding); + int actions = ImportActions(currentActionsFile, newActionsFile); + */ + + ImportActionSets(currentActionsFile, newActionsFile); + ImportLocalization(currentActionsFile, newActionsFile, partialBinding); + ImportActions(currentActionsFile, newActionsFile); + + if (SteamVR_Input.HasFileInMemoryBeenModified()) + { + SteamVR_Input.actionFile.Save(SteamVR_Input.GetActionsFilePath()); + + Debug.Log("[SteamVR] Saved new actions file: " + SteamVR_Input.GetActionsFilePath()); + } + + ImportBindings(currentActionsFile, newActionsFile, partialBinding.GetDirectory()); + + partialBinding.imported = true; + partialBinding.Save(); + + SteamVR_Input.InitializeFile(true); + SteamVR_Input_EditorWindow.ReopenWindow(); + + //todo: ask first? + /*string dialogText = string.Format("{0} new action sets, {1} new actions, and {2} new localization strings have been added. Would you like to regenerate SteamVR Input code files?", sets, actions, locs); + + bool confirm = EditorUtility.DisplayDialog("SteamVR Input", dialogText, "Generate", "Cancel"); + if (confirm) + SteamVR_Input_Generator.BeginGeneration(); + */ + + SteamVR_Input_Generator.BeginGeneration(); + + Debug.Log("[SteamVR] Reloaded actions file with additional actions from " + partialBinding.name); + } + + protected static void ReplaceBinding(SteamVR_PartialInputBindings partialBinding) + { + SteamVR_Input.DeleteManifestAndBindings(); + + string newActionsFilePath = partialBinding.GetActionsPath(); + if (File.Exists(newActionsFilePath)) + { + File.Copy(newActionsFilePath, SteamVR_Input.GetActionsFilePath()); + } + + string bindingsFolder = SteamVR_Input.GetActionsFileFolder(); + + SteamVR_Input_ActionFile newActionsFile = ReadJson(SteamVR_Input.GetActionsFilePath()); + string partialBindingDirectory = partialBinding.GetDirectory(); + + foreach (var newDefaultPath in newActionsFile.default_bindings) + { + string bindingPath = Path.Combine(partialBindingDirectory, newDefaultPath.binding_url); + string newBindingPath = Path.Combine(bindingsFolder, newDefaultPath.binding_url); + File.Copy(bindingPath, newBindingPath, true); + } + + partialBinding.imported = true; + partialBinding.Save(); + + SteamVR_Input.InitializeFile(true); + SteamVR_Input_EditorWindow.ReopenWindow(); + + //todo: ask first? + /*string dialogText = string.Format("{0} new action sets, {1} new actions, and {2} new localization strings have been added. Would you like to regenerate SteamVR Input code files?", sets, actions, locs); + + bool confirm = EditorUtility.DisplayDialog("SteamVR Input", dialogText, "Generate", "Cancel"); + if (confirm) + SteamVR_Input_Generator.BeginGeneration(); + */ + + SteamVR_Input_Generator.BeginGeneration(); + + Debug.Log("[SteamVR Input] Reloaded with new actions from " + partialBinding.name); + } + + protected static T ReadJson(string path) + { + if (File.Exists(path)) + { + string jsonText = File.ReadAllText(path); + return JsonConvert.DeserializeObject(jsonText); + } + + return default(T); + } + + protected static List RemoveOldActions(List partialBindingList) + { + List toRemove = new List(); + + SteamVR_Input_ActionFile newestActionsFile = ReadJson(partialBindingList[0].GetActionsPath()); + + for (int partialBindingIndex = 1; partialBindingIndex < partialBindingList.Count; partialBindingIndex++) + { + SteamVR_Input_ActionFile oldActionsFile = ReadJson(partialBindingList[partialBindingIndex].GetActionsPath()); + + for (int oldActionIndex = 0; oldActionIndex < oldActionsFile.actions.Count; oldActionIndex++) + { + var oldAction = oldActionsFile.actions[oldActionIndex]; + + if (newestActionsFile.actions.Any(newAction => oldAction.Equals(newAction)) == false) + { + var existing = SteamVR_Input.actionFile.actions.FirstOrDefault(action => oldAction.Equals(action)); + if (existing != null) + { + SteamVR_Input.actionFile.actions.Remove(existing); + toRemove.Add(oldAction); + } + } + } + } + + return toRemove; + } + + protected static List RemoveOldActionSets(List partialBindingList) + { + List toRemove = new List(); + + SteamVR_Input_ActionFile newestActionsFile = ReadJson(partialBindingList[0].GetActionsPath()); + + for (int partialBindingIndex = 1; partialBindingIndex < partialBindingList.Count; partialBindingIndex++) + { + SteamVR_Input_ActionFile oldActionsFile = ReadJson(partialBindingList[0].GetActionsPath()); + + for (int oldActionIndex = 0; oldActionIndex < oldActionsFile.action_sets.Count; oldActionIndex++) + { + var oldActionSet = oldActionsFile.action_sets[oldActionIndex]; + + if (newestActionsFile.action_sets.Any(newAction => oldActionSet.Equals(newAction)) == false) + { + var existing = SteamVR_Input.actionFile.action_sets.FirstOrDefault(actionSet => oldActionSet.Equals(actionSet)); + if (existing != null) + { + SteamVR_Input.actionFile.action_sets.Remove(existing); + toRemove.Add(oldActionSet); + } + } + } + } + + return toRemove; + } + + protected static int RemoveOldLocalizations(List removedActionList) + { + int count = 0; + + foreach (var action in removedActionList) + { + foreach (var locDictionary in SteamVR_Input.actionFile.localization) + { + bool removed = locDictionary.Remove(action.name); + if (removed) + count++; + } + } + + return count; + } + + protected static void RemoveOldActionsAndSetsFromBindings(List setsToRemove, List actionsToRemove) + { + foreach (var defaultBindingItem in SteamVR_Input.actionFile.default_bindings) + { + string currentBindingPath = defaultBindingItem.binding_url; + + SteamVR_Input_BindingFile currentBindingFile = GetBindingFileObject(currentBindingPath); + if (currentBindingFile == null) + { + Debug.LogError("[SteamVR] There was an error deserializing the binding at path: " + currentBindingPath); + continue; + } + + bool changed = false; + + List bindingListsToRemove = new List(); + foreach (var actionList in currentBindingFile.bindings) + { + if (setsToRemove.Any(set => set.name == actionList.Key)) + { + bindingListsToRemove.Add(actionList.Key); + changed = true; + continue; + } + + for (int chordIndex = 0; chordIndex < actionList.Value.chords.Count; chordIndex++) + { + var existingChord = actionList.Value.chords[chordIndex]; + if (actionsToRemove.Any(action => action.name == existingChord.output)) + { + actionList.Value.chords.Remove(existingChord); + chordIndex--; + changed = true; + } + } + + for (int hapticIndex = 0; hapticIndex < actionList.Value.haptics.Count; hapticIndex++) + { + var existingHaptic = actionList.Value.haptics[hapticIndex]; + if (actionsToRemove.Any(action => action.name == existingHaptic.output)) + { + actionList.Value.haptics.Remove(existingHaptic); + hapticIndex--; + changed = true; + } + } + + for (int poseIndex = 0; poseIndex < actionList.Value.poses.Count; poseIndex++) + { + var existingPose = actionList.Value.poses[poseIndex]; + if (actionsToRemove.Any(action => action.name == existingPose.output)) + { + actionList.Value.poses.Remove(existingPose); + poseIndex--; + changed = true; + } + } + + for (int skeletonIndex = 0; skeletonIndex < actionList.Value.skeleton.Count; skeletonIndex++) + { + var existingSkeleton = actionList.Value.skeleton[skeletonIndex]; + if (actionsToRemove.Any(action => action.name == existingSkeleton.output)) + { + actionList.Value.skeleton.Remove(existingSkeleton); + skeletonIndex--; + changed = true; + } + } + + for (int sourceIndex = 0; sourceIndex < actionList.Value.sources.Count; sourceIndex++) + { + var existingSource = actionList.Value.sources[sourceIndex]; + if (actionsToRemove.Any(action => action.name == existingSource.GetOutput())) + { + actionList.Value.sources.Remove(existingSource); + sourceIndex--; + changed = true; + } + } + } + + for (int bindingListToRemoveIndex = 0; bindingListToRemoveIndex < bindingListsToRemove.Count; bindingListToRemoveIndex++) + { + currentBindingFile.bindings.Remove(bindingListsToRemove[bindingListToRemoveIndex]); + } + + if (changed) + { + WriteBindingFileObject(currentBindingFile, currentBindingPath); + } + } + } + + protected static void RemoveOldPartialBindings(List partialBindingList) + { + List actionsToRemove = RemoveOldActions(partialBindingList); + List setsToRemove = RemoveOldActionSets(partialBindingList); + + int sets = setsToRemove.Count; + int actions = actionsToRemove.Count; + int locs = RemoveOldLocalizations(actionsToRemove); + + string dialogText = string.Format("We've found a old {0} action sets, {1} actions, and {2} localization entries from old versions of this partial binding. Would you like to remove them from the actions file and default bindings?", sets, actions, locs); + + bool confirm = EditorUtility.DisplayDialog("SteamVR Input", dialogText, "Import", "Cancel"); + if (confirm) + { + RemoveOldActionsAndSetsFromBindings(setsToRemove, actionsToRemove); + + SteamVR_Input.actionFile.Save(SteamVR_Input.GetActionsFilePath()); + + SteamVR_Input.InitializeFile(true); // reload after the save + } + else + { + SteamVR_Input.InitializeFile(true); // reload since we actually removed the actions / sets to display this message + } + } + + protected const string dontAskAgainTemplate = "{0}_{1}_DontAskAgain"; + protected static void ConfirmImport(List partialBindingList) + { + SteamVR_PartialInputBindings partial = partialBindingList.First(); + + //bool dontAskAgain = EditorPrefs.GetBool(dontAskAgainTemplate, false); + + //todo: implement 'do not ask again' + string dialogText = string.Format("We've found a partial SteamVR Input binding for '{0}' version '{1}'. Would you like to import it?", partial.name, partial.version); + + bool confirm = EditorUtility.DisplayDialog("SteamVR Input", dialogText, "Import", "Cancel"); + if (confirm) + { + bool actionsExists = SteamVR_Input.DoesActionsFileExist(); + + if (actionsExists) + { + string mergeDialogText = "You have two options for importing this binding:\n Replace your current action file (delete all your actions)\n Merge the partial action file with your existing actions"; + bool shouldMerge = EditorUtility.DisplayDialog("SteamVR Input", mergeDialogText, "Merge", "Replace"); + + if (shouldMerge) + { + ImportPartialBinding(partial); + } + else + { + ReplaceBinding(partial); + } + } + else + { + ReplaceBinding(partial); + } + + if (partialBindingList.Count > 1) + { + RemoveOldPartialBindings(partialBindingList); + } + } + } + + public static Dictionary> ScanForPartials() + { + string[] partialManifestPaths = Directory.GetFiles(Application.dataPath, partialManifestFilename, SearchOption.AllDirectories); + Dictionary> partialBindings = new Dictionary>(); + + for (int partialIndex = 0; partialIndex < partialManifestPaths.Length; partialIndex++) + { + string path = partialManifestPaths[partialIndex]; + string jsonText = File.ReadAllText(path); + + SteamVR_PartialInputBindings partialBinding = JsonConvert.DeserializeObject(jsonText); + partialBinding.path = path; + + if (partialBindings.ContainsKey(partialBinding.name)) + { + for (int versionIndex = 0; versionIndex < partialBindings[partialBinding.name].Count; versionIndex++) + { + if (partialBinding.version < partialBindings[partialBinding.name][versionIndex].version) + partialBindings[partialBinding.name].Insert(versionIndex, partialBinding); + } + } + else + { + partialBindings.Add(partialBinding.name, new List() { partialBinding }); + } + } + + return partialBindings; + } + } + + public class SteamVR_PartialInputBindings + { + public string name; + public int version; + public bool overwriteOld; + public bool removeUnused; + public bool imported; + + [JsonIgnore] + public string path { get; set; } + + public string GetActionsPath() + { + return Path.Combine(GetDirectory(), "actions.json"); + } + + public string GetDirectory() + { + return new FileInfo(path).Directory.FullName; + } + + public void Save() + { + FileInfo existingActionsFile = new FileInfo(path); + if (existingActionsFile.Exists) + { + existingActionsFile.IsReadOnly = false; + } + + //SanitizeActionFile(); //todo: shouldn't we be doing this? + + string json = JsonConvert.SerializeObject(this, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + File.WriteAllText(path, json); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs.meta new file mode 100644 index 00000000..cbf61030 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionManifest_Manager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c0dec2678a8ce94dbdd749500441172 +timeCreated: 1540850400 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs new file mode 100644 index 00000000..510f4968 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs @@ -0,0 +1,177 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_ActionSet))] + public class SteamVR_Input_ActionSetPropertyEditor : PropertyDrawer + { + protected SteamVR_ActionSet[] actionSets; + protected string[] enumItems; + public int selectedIndex = notInitializedIndex; + + protected const int notInitializedIndex = -1; + protected const int noneIndex = 0; + protected int addIndex = 1; + + protected const string defaultPathTemplate = " \u26A0 Missing action set: {0}"; + protected string defaultPathLabel = null; + + protected void Awake() + { + actionSets = SteamVR_Input.GetActionSets(); + if (actionSets != null && actionSets.Length > 0) + { + List enumList = actionSets.Select(actionSet => actionSet.fullPath).ToList(); + + enumList.Insert(noneIndex, "None"); + + //replace forward slashes with backslack instead + for (int index = 0; index < enumList.Count; index++) + enumList[index] = enumList[index].Replace('/', '\\'); + + enumList.Add("Add..."); + enumItems = enumList.ToArray(); + } + else + { + enumItems = new string[] { "None", "Add..." }; + } + + addIndex = enumItems.Length - 1; + + /* + //keep sub menus: + for (int index = 0; index < enumItems.Length; index++) + if (enumItems[index][0] == '/') + enumItems[index] = enumItems[index].Substring(1); + */ + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + float height = base.GetPropertyHeight(property, label); + + SerializedProperty actionPathProperty = property.FindPropertyRelative("actionSetPath"); + if (string.IsNullOrEmpty(actionPathProperty.stringValue) == false) + { + if (selectedIndex == 0) + return height * 2; + } + + return height; + } + + // Draw the property inside the given rect + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (SteamVR_Input.actions == null || SteamVR_Input.actions.Length == 0) + { + EditorGUI.BeginProperty(position, label, property); + EditorGUI.LabelField(position, "Please generate SteamVR Input actions"); + EditorGUI.EndProperty(); + return; + } + + if (enumItems == null || enumItems.Length == 0) + { + Awake(); + } + + // Using BeginProperty / EndProperty on the parent property means that + // prefab override logic works on the entire property. + EditorGUI.BeginProperty(position, label, property); + + SerializedProperty actionPathProperty = property.FindPropertyRelative("actionSetPath"); + string currentPath = null; + + if (actionPathProperty != null) + { + currentPath = actionPathProperty.stringValue; + if (string.IsNullOrEmpty(currentPath) == false) + { + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + if (actionSets[actionSetIndex].fullPath == currentPath) + { + selectedIndex = actionSetIndex + 1; // account for none option + break; + } + } + } + } + + if (selectedIndex == notInitializedIndex) + selectedIndex = 0; + + + Rect labelPosition = position; + labelPosition.width = EditorGUIUtility.labelWidth; + EditorGUI.LabelField(labelPosition, label); + + Rect fieldPosition = position; + fieldPosition.x = (labelPosition.x + labelPosition.width); + fieldPosition.width = EditorGUIUtility.currentViewWidth - (labelPosition.x + labelPosition.width) - 5 - 16; + + if (selectedIndex == 0 && string.IsNullOrEmpty(currentPath) == false) + { + if (defaultPathLabel == null) + defaultPathLabel = string.Format(defaultPathTemplate, currentPath); + + Rect defaultLabelPosition = position; + defaultLabelPosition.y = position.y + fieldPosition.height / 2f; + + EditorGUI.LabelField(defaultLabelPosition, defaultPathLabel); + } + + Rect objectRect = position; + objectRect.x = fieldPosition.x + fieldPosition.width + 15; + objectRect.width = 10; + + bool showInputWindow = false; + + int wasSelected = selectedIndex; + selectedIndex = EditorGUI.Popup(fieldPosition, selectedIndex, enumItems); + if (selectedIndex != wasSelected) + { + if (selectedIndex == noneIndex || selectedIndex == notInitializedIndex) + { + selectedIndex = noneIndex; + + actionPathProperty.stringValue = null; + } + else if (selectedIndex == addIndex) + { + selectedIndex = wasSelected; // don't change the index + showInputWindow = true; + } + else + { + int actionIndex = selectedIndex - 1; // account for none option + + actionPathProperty.stringValue = actionSets[actionIndex].GetPath(); + //property.objectReferenceValue = actions[actionIndex]; + } + + property.serializedObject.ApplyModifiedProperties(); + } + + EditorGUI.EndProperty(); + + if (showInputWindow) + SteamVR_Input_EditorWindow.ShowWindow(); //show the input window so they can add a new actionset + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs.meta new file mode 100644 index 00000000..e0ba9d6e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_ActionSetPropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 074d66e09af4e46429424ca09a9c3402 +timeCreated: 1521655060 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs new file mode 100644 index 00000000..e1fefbc9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Boolean))] + public class SteamVR_Input_Action_Boolean_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs.meta new file mode 100644 index 00000000..54282e7a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Boolean_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 779685f855764aa449874336c160b4d0 +timeCreated: 1521130773 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs new file mode 100644 index 00000000..e0d580d6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs @@ -0,0 +1,187 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + public class SteamVR_Input_Action_GenericPropertyEditor : PropertyDrawer where T : SteamVR_Action, new() + { + protected T[] actions; + protected string[] enumItems; + public int selectedIndex = notInitializedIndex; + + protected const int notInitializedIndex = -1; + protected const int noneIndex = 0; + protected int addIndex = 1; + + + protected const string defaultPathTemplate = " \u26A0 Missing action: {0}"; + protected string defaultPathLabel = null; + + protected void Awake() + { + actions = SteamVR_Input.GetActions(); + if (actions != null && actions.Length > 0) + { + List enumList = actions.Select(action => action.fullPath).ToList(); + + enumList.Insert(noneIndex, "None"); + + //replace forward slashes with backslack instead + for (int index = 0; index < enumList.Count; index++) + enumList[index] = enumList[index].Replace('/', '\\'); + + enumList.Add("Add..."); + enumItems = enumList.ToArray(); + } + else + { + enumItems = new string[] { "None", "Add..." }; + } + + addIndex = enumItems.Length - 1; + + /* + //keep sub menus: + for (int index = 0; index < enumItems.Length; index++) + if (enumItems[index][0] == '/') + enumItems[index] = enumItems[index].Substring(1); + */ + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + float height = base.GetPropertyHeight(property, label); + + SerializedProperty actionPathProperty = property.FindPropertyRelative("actionPath"); + if (string.IsNullOrEmpty(actionPathProperty.stringValue) == false) + { + if (selectedIndex == 0) + return height * 2; + } + + return height; + } + + // Draw the property inside the given rect + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (SteamVR_Input.actions == null || SteamVR_Input.actions.Length == 0) + { + EditorGUI.BeginProperty(position, label, property); + EditorGUI.LabelField(position, "Please generate SteamVR Input actions"); + EditorGUI.EndProperty(); + return; + } + + if (enumItems == null || enumItems.Length == 0) + { + Awake(); + } + + // Using BeginProperty / EndProperty on the parent property means that + // prefab override logic works on the entire property. + EditorGUI.BeginProperty(position, label, property); + + SerializedProperty actionPathProperty = property.FindPropertyRelative("actionPath"); + string currentPath = null; + + if (actionPathProperty != null) + { + currentPath = actionPathProperty.stringValue; + + if (string.IsNullOrEmpty(currentPath) == false) + { + SteamVR_Action existingAction = SteamVR_Action.FindExistingActionForPartialPath(currentPath); + if (existingAction != null) + { + if (currentPath != existingAction.GetPath()) + { + actionPathProperty.stringValue = existingAction.GetPath(); + property.serializedObject.ApplyModifiedProperties(); + } + + currentPath = existingAction.GetPath(); + } + + for (int actionsIndex = 0; actionsIndex < actions.Length; actionsIndex++) + { + if (actions[actionsIndex].fullPath == currentPath) + { + selectedIndex = actionsIndex + 1; // account for none option + break; + } + } + } + } + + if (selectedIndex == notInitializedIndex) + selectedIndex = 0; + + + Rect labelPosition = position; + labelPosition.width = EditorGUIUtility.labelWidth; + EditorGUI.LabelField(labelPosition, label); + + Rect fieldPosition = position; + fieldPosition.x = (labelPosition.x + labelPosition.width); + fieldPosition.width = EditorGUIUtility.currentViewWidth - (labelPosition.x + labelPosition.width) - 5; + + if (selectedIndex == 0 && string.IsNullOrEmpty(currentPath) == false) + { + if (defaultPathLabel == null) + defaultPathLabel = string.Format(defaultPathTemplate, currentPath); + + Rect defaultLabelPosition = position; + defaultLabelPosition.y = position.y + fieldPosition.height / 2f; + + EditorGUI.LabelField(defaultLabelPosition, defaultPathLabel); + } + + bool showInputWindow = false; + + int wasSelected = selectedIndex; + selectedIndex = EditorGUI.Popup(fieldPosition, selectedIndex, enumItems); + if (selectedIndex != wasSelected) + { + if (selectedIndex == noneIndex || selectedIndex == notInitializedIndex) + { + selectedIndex = noneIndex; + + actionPathProperty.stringValue = null; + } + else if (selectedIndex == addIndex) + { + selectedIndex = wasSelected; // don't change the index + showInputWindow = true; + } + else + { + int actionIndex = selectedIndex - 1; // account for none option + + actionPathProperty.stringValue = actions[actionIndex].GetPath(); + //property.objectReferenceValue = actions[actionIndex]; + } + + property.serializedObject.ApplyModifiedProperties(); + } + + + EditorGUI.EndProperty(); + + if (showInputWindow) + SteamVR_Input_EditorWindow.ShowWindow(); //show the input window so they can add a new action + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs.meta new file mode 100644 index 00000000..41e8be3b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_GenericPropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2800414421e3d124486646cbf8206a64 +timeCreated: 1520474969 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs new file mode 100644 index 00000000..ee646844 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs @@ -0,0 +1,18 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs.meta new file mode 100644 index 00000000..bf6cf581 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_In_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f01bda1d81aff44b8832e1779ef392f +timeCreated: 1521130773 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs new file mode 100644 index 00000000..21ecddd0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs @@ -0,0 +1,19 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs.meta new file mode 100644 index 00000000..67484a85 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Out_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bc5014b5bd4c9254885346ccb2479e34 +timeCreated: 1521130774 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs new file mode 100644 index 00000000..766aadc1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Pose))] + public class SteamVR_Input_Action_Pose_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs.meta new file mode 100644 index 00000000..6f149086 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Pose_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6c580c8ee65b2064b9cecf9c8a56b126 +timeCreated: 1521130773 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs new file mode 100644 index 00000000..b519de55 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs @@ -0,0 +1 @@ +// removed \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs.meta new file mode 100644 index 00000000..5abdcb65 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef30f8b815c7563459f9bb661516015e +timeCreated: 1521130774 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs new file mode 100644 index 00000000..30ed9146 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Single))] + public class SteamVR_Input_Action_Single_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs.meta new file mode 100644 index 00000000..3b9afcff --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Single_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4830402dc20240e4ea78925fdf5cb924 +timeCreated: 1521652403 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs new file mode 100644 index 00000000..f9b0fee0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Skeleton))] + public class SteamVR_Input_Action_Skeleton_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs.meta new file mode 100644 index 00000000..0523ee06 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Skeleton_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 67e9f92e8ad511b47ac9bd0e49834d0f +timeCreated: 1521652403 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs new file mode 100644 index 00000000..00b7568b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Vector2))] + public class SteamVR_Input_Action_Vector2_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs.meta new file mode 100644 index 00000000..45825a0f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector2_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 44945f1de2d06c843bbacc0c37a431c2 +timeCreated: 1521652403 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs new file mode 100644 index 00000000..67a002ef --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Vector3))] + public class SteamVR_Input_Action_Vector3_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs.meta new file mode 100644 index 00000000..92defccc --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vector3_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 08029b867fa0bbf4bb41613c2ebb449e +timeCreated: 1521652403 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs new file mode 100644 index 00000000..0afa07fe --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; + + +namespace Valve.VR +{ + [CustomPropertyDrawer(typeof(SteamVR_Action_Vibration))] + public class SteamVR_Input_Action_Vibration_PropertyEditor : SteamVR_Input_Action_GenericPropertyEditor + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs.meta new file mode 100644 index 00000000..5fb8d7c8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Action_Vibration_PropertyEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6687413c4fe847b418c7a33716013e07 +timeCreated: 1521742954 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef new file mode 100644 index 00000000..85f1f4db --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "SteamVR_Input_Editor", + "references": [ + "SteamVR" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef.meta new file mode 100644 index 00000000..390f637e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2476fd5d698aa614194466a3af5d192f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs new file mode 100644 index 00000000..cbfc181f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs @@ -0,0 +1,1043 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; +using UnityEditorInternal; +using Valve.Newtonsoft.Json; + +namespace Valve.VR +{ +#pragma warning disable 0219 // variable assigned but not used. + public class SteamVR_Input_EditorWindow : EditorWindow + { + private static SteamVR_Input_EditorWindow instance; + + [MenuItem("Window/SteamVR Input")] + public static void ShowWindow() + { + instance = GetWindow(false, "SteamVR Input", true); + } + + public static void ReopenWindow() + { + instance = GetOpenWindow(); + if (instance != null) + { + instance.ForceClose(); + System.Threading.Thread.Sleep(100); + } + + ShowWindow(); + } + + public static void Refresh() + { + instance = GetOpenWindow(); + + if (instance != null) + { + instance.selectedActionIndex = -1; + instance.selectedAction = null; + instance.selectedActionSet = -1; + instance.selectedLocalizationIndex = -1; + instance.scrollPosition = Vector2.zero; + + SteamVR_Input.InitializeFile(true); + instance.InitializeLists(); + } + } + + private bool forcingClose = false; + public void ForceClose() + { + forcingClose = true; + this.Close(); + } + + private const bool defaultOverwriteBuildOption = true; + private const bool defaultDeleteUnusedOption = true; + + private static void InitializeEditorValues() + { + if (EditorPrefs.HasKey(SteamVR_Input_Generator.steamVRInputOverwriteBuildKey) == false) + EditorPrefs.SetBool(SteamVR_Input_Generator.steamVRInputOverwriteBuildKey, defaultOverwriteBuildOption); + + if (EditorPrefs.HasKey(SteamVR_Input_Generator.steamVRInputDeleteUnusedKey) == false) + EditorPrefs.SetBool(SteamVR_Input_Generator.steamVRInputDeleteUnusedKey, defaultDeleteUnusedOption); + } + + private ReorderableList inList; + private ReorderableList outList; + private ReorderableList localizationList; + + private int selectedActionIndex = -1; + private SteamVR_Input_ActionFile_Action selectedAction; + private int selectedActionSet = -1; + private int selectedLocalizationIndex = -1; + + private void InitializeLists() + { + if (selectedActionSet == -1) + { + inList = null; + outList = null; + return; + } + + + inList = new ReorderableList(SteamVR_Input.actionFile.action_sets[selectedActionSet].actionsInList, typeof(string), false, true, true, true); + inList.onAddCallback += OnAddCallback; + inList.onRemoveCallback += OnRemoveCallback; + inList.onSelectCallback += OnSelectCallback; + inList.drawHeaderCallback += DrawHeaderCallbackIn; + + outList = new ReorderableList(SteamVR_Input.actionFile.action_sets[selectedActionSet].actionsOutList, typeof(string), false, true, true, true); + outList.onAddCallback += OnAddCallback; + outList.onRemoveCallback += OnRemoveCallback; + outList.onSelectCallback += OnSelectCallback; + outList.drawHeaderCallback += DrawHeaderCallbackOut; + } + + private void DrawHeaderCallbackIn(Rect rect) + { + DrawHeaderCallback(rect, "In"); + } + + private void DrawHeaderCallbackOut(Rect rect) + { + DrawHeaderCallback(rect, "Out"); + } + + private void DrawHeaderCallback(Rect rect, string name) + { + EditorGUI.LabelField(rect, name); + } + + private void OnSelectCallback(ReorderableList list) + { + selectedActionIndex = list.index; + + if (selectedActionIndex != -1) + { + selectedAction = (SteamVR_Input_ActionFile_Action)list.list[selectedActionIndex]; + } + + if (inList == list) + { + outList.index = -1; + } + else if (outList == list) + { + inList.index = -1; + } + } + + private void OnRemoveCallback(ReorderableList list) + { + if (list.index == -1) + return; + + list.list.RemoveAt(list.index); + + list.index = -1; + + OnSelectCallback(list); + } + + private void OnAddCallback(ReorderableList list) + { + if (selectedActionSet == -1) + { + return; + } + + SteamVR_Input_ActionFile_Action newAction = new SteamVR_Input_ActionFile_Action(); + list.list.Add(newAction); + + string direction = ""; + + if (inList == list) + { + direction = "in"; + outList.index = -1; + inList.index = inList.list.Count - 1; + } + else if (outList == list) + { + direction = "out"; + inList.index = -1; + outList.index = outList.list.Count - 1; + } + + newAction.name = SteamVR_Input_ActionFile_Action.CreateNewName(SteamVR_Input.actionFile.action_sets[selectedActionSet].shortName, direction); + + OnSelectCallback(list); + } + + private void InitializeLocalizationArray() + { + localizationList = new ReorderableList(SteamVR_Input.actionFile.localizationHelperList, typeof(string), false, true, true, true); + localizationList.onAddCallback += LocalizationOnAddCallback; + localizationList.onRemoveCallback += LocalizationOnRemoveCallback; + localizationList.onSelectCallback += LocalizationOnSelectCallback; + localizationList.drawHeaderCallback += LocalizationDrawHeaderCallback; + localizationList.drawElementCallback += LocalizationDrawElementCallback; + } + + private void LocalizationDrawElementCallback(Rect rect, int index, bool isActive, bool isFocused) + { + SteamVR_Input_ActionFile_LocalizationItem item = ((List)localizationList.list)[index]; + + if (localizationList.index == index) + { + item.language = EditorGUI.TextField(rect, item.language); + } + else + { + EditorGUI.LabelField(rect, item.language); + } + } + + private void LocalizationDrawHeaderCallback(Rect rect) + { + EditorGUI.LabelField(rect, "Languages"); + } + + private void LocalizationOnSelectCallback(ReorderableList list) + { + selectedLocalizationIndex = list.index; + } + + private void LocalizationOnRemoveCallback(ReorderableList list) + { + List itemList = ((List)localizationList.list); + itemList.RemoveAt(list.index); + + selectedLocalizationIndex = -1; + } + + private void LocalizationOnAddCallback(ReorderableList list) + { + List itemList = ((List)localizationList.list); + SteamVR_Input_ActionFile_LocalizationItem newLanguage = new SteamVR_Input_ActionFile_LocalizationItem("new-language"); + newLanguage.items.Add(selectedAction.name, selectedAction.name); + + itemList.Add(newLanguage); + + selectedLocalizationIndex = list.list.Count - 1; + } + + private const string progressBarTitle = "SteamVR Input Generation"; + private const string progressBarTextKey = "SteamVR_Input_ProgressBarText"; + private const string progressBarAmountKey = "SteamVR_Input_ProgressBarAmount"; + private static string progressBarText = null; + private static float progressBarAmount = 0; + public static void SetProgressBarText(string newText, float newAmount) + { + EditorPrefs.SetString(progressBarTextKey, newText); + EditorPrefs.SetFloat(progressBarAmountKey, newAmount); + progressBarText = newText; + progressBarAmount = newAmount; + } + public static void ClearProgressBar() + { + EditorPrefs.SetString(progressBarTextKey, ""); + EditorPrefs.SetFloat(progressBarAmountKey, 0); + progressBarText = ""; + progressBarAmount = 0; + + EditorUtility.ClearProgressBar(); + } + private static void UpdateProgressBarTextFromPrefs() + { + if (progressBarText == null) + { + if (EditorPrefs.HasKey(progressBarTextKey)) + { + progressBarText = EditorPrefs.GetString(progressBarTextKey); + progressBarAmount = EditorPrefs.GetFloat(progressBarAmountKey); + } + else + { + progressBarText = ""; + EditorPrefs.SetString(progressBarTextKey, progressBarText); + } + } + } + + private Vector2 scrollPosition; + + private bool initialized = false; + + private void Initialize(bool force = false) + { + SteamVR_Input.InitializeFile(force, false); + InitializeEditorValues(); + initialized = true; + } + + private bool CopyOrClose() + { + bool copyExamples = UnityEditor.EditorUtility.DisplayDialog("Copy Examples", "It looks like your project is missing an actions.json. Would you like to use the example files?", "Yes", "No"); + if (copyExamples) + { + SteamVR_CopyExampleInputFiles.CopyFiles(true); + System.Threading.Thread.Sleep(1000); + bool initializeSuccess = SteamVR_Input.InitializeFile(); + return initializeSuccess; + } + else + { + SteamVR_Input.CreateEmptyActionsFile(); + System.Threading.Thread.Sleep(1000); + bool initializeSuccess = SteamVR_Input.InitializeFile(); + return initializeSuccess; + } + //Debug.LogErrorFormat("[SteamVR] Actions file does not exist in project root: {0}. You'll need to create one for SteamVR to work.", SteamVR_Input.actionsFilePath); + } + + private void CheckFileInitialized() + { + if (initialized == false) + { + Initialize(); + } + + if (SteamVR_Input.actionFile == null) + { + bool initializeSuccess = SteamVR_Input.InitializeFile(false, false); + + if (initializeSuccess == false) + { + bool copySuccess = CopyOrClose(); + if (copySuccess == false) + { + Close(); // close the window since they didn't initialize the file + } + } + } + } + + private void UpdateProgressBar() + { + UpdateProgressBarTextFromPrefs(); + if (string.IsNullOrEmpty(progressBarText) == false) + { + EditorUtility.DisplayProgressBar(progressBarTitle, progressBarText, progressBarAmount); + } + } + + private void CheckInitialized() + { + if (localizationList == null) + InitializeLocalizationArray(); + + if (selectedLocalizationIndex == -1 && localizationList.count > 0) + selectedLocalizationIndex = 0; + + if (selectedActionSet == -1 && SteamVR_Input.actionFile.action_sets.Count() > 0) + { + selectedActionSet = 0; + InitializeLists(); + } + + if (selectedActionSet != -1 && inList == null) + InitializeLists(); + } + + public static bool IsOpen() + { + SteamVR_Input_EditorWindow[] windows = Resources.FindObjectsOfTypeAll(); + if (windows != null && windows.Length > 0) + { + return true; + } + return false; + } + + public static SteamVR_Input_EditorWindow GetOpenWindow() + { + SteamVR_Input_EditorWindow[] windows = Resources.FindObjectsOfTypeAll(); + if (windows != null && windows.Length > 0) + { + return windows[0]; + } + return null; + } + + private GUIStyle headerLabelStyle = null; + private void OnGUI() + { + if (headerLabelStyle == null) + headerLabelStyle = new GUIStyle(EditorStyles.boldLabel); + + CheckFileInitialized(); + + UpdateProgressBar(); + + if (Application.isPlaying == false && (SteamVR_Input_Generator.IsGenerating() == true || string.IsNullOrEmpty(progressBarText) == false)) + { + EditorGUI.LabelField(new Rect(0, 0, 200, 20), "Generating SteamVR Input..."); + + bool cancel = GUI.Button(new Rect(50, 20, 100, 20), "Cancel"); + if (cancel) + { + SteamVR_Input_Generator.CancelGeneration(); + ClearProgressBar(); + } + + return; + } + +#if UNITY_2017_1_OR_NEWER + if (EditorApplication.isCompiling) + { + EditorGUI.LabelField(new Rect(0, 0, 100, 20), "Compiling..."); + return; //ongui gets more fussy after 2017 + } +#endif + CheckInitialized(); + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); + + EditorGUILayout.Space(); + + DrawTop(); + + EditorGUILayout.Space(); + + DrawSets(); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + if (selectedActionSet == -1) + { + DrawNoSetSelected(); + } + else + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.BeginVertical(); + DrawActions(); + EditorGUILayout.EndVertical(); + EditorGUILayout.Space(); + EditorGUILayout.Space(); + EditorGUILayout.BeginVertical(); + if (selectedActionIndex == -1) + { + DrawNoActionSelected(); + } + else + { + DrawDetails(); + } + + EditorGUILayout.EndVertical(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + DrawSave(); + } + + EditorGUILayout.EndScrollView(); + } + + private void DrawTop() + { + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + DrawSettingsButton(); + EditorGUILayout.EndHorizontal(); + } + + private void DrawSettingsButton() + { + bool openSettings = GUILayout.Button("Advanced Settings"); + + if (openSettings) + { + SteamVR_Input_SettingsEditor.ShowWindow(); + } + } + + private void DrawNoSetSelected() + { + //EditorGUILayout.LabelField("No action set selected."); + EditorGUILayout.LabelField(""); + } + + private void DrawNoActionSelected() + { + //EditorGUILayout.LabelField("No action selected."); + EditorGUILayout.LabelField(""); + } + + private void DrawSave() + { + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + bool save = GUILayout.Button("Save and generate"); + GUILayout.FlexibleSpace(); + bool open = GUILayout.Button("Open binding UI"); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + if (save) + { + EditorApplication.delayCall += SaveFile; + } + + if (open) + { + OpenControllerBindings(); + } + } + + private void OpenControllerBindings() + { + if (HasBeenModified()) + { + bool saveFirst = EditorUtility.DisplayDialog("Save?", "It looks like you've made changes without saving. Would you like to save before editing the bindings?.", "Save", "Open without saving"); + if (saveFirst) + { + SaveFile(); + } + } + + SteamVR.ShowBindingsForEditor(); + } + + private bool HasBeenModified() + { + SteamVR_Input.actionFile.SaveHelperLists(); + return SteamVR_Input.HasFileInMemoryBeenModified(); + } + + private void OnDestroy() + { + if (forcingClose == false && HasBeenModified()) + { + bool saveFirst = EditorUtility.DisplayDialog("Save?", "It looks like you've closed the input actions window without saving changes. Would you like to save first?", "Save", "Close"); + if (saveFirst) + { + SaveFile(); + } + } + } + + private void DrawActions() + { + EditorGUILayout.BeginFadeGroup(1); + + EditorGUILayout.LabelField("Actions", headerLabelStyle); + + EditorGUILayout.Space(); + + if (inList != null) + inList.DoLayoutList(); + + EditorGUILayout.Space(); + + if (inList != null) + outList.DoLayoutList(); + + EditorGUILayout.EndFadeGroup(); + } + + + private void DrawDetails() + { + EditorGUILayout.BeginFadeGroup(1); + + EditorGUILayout.LabelField("Action Details", headerLabelStyle); + + EditorGUILayout.Space(); + + + EditorGUILayout.LabelField("Full Action Path:"); + if (selectedActionIndex != -1) + { + EditorGUILayout.LabelField(selectedAction.name); + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Name:"); + if (selectedActionIndex != -1) + { + string newName = EditorGUILayout.TextField(selectedAction.shortName); + + if (newName != selectedAction.shortName) + { + selectedAction.name = selectedAction.path + newName; + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Type:"); + if (selectedActionIndex != -1) + { + bool directionIn = selectedAction.path.IndexOf("/in/", StringComparison.CurrentCultureIgnoreCase) != -1; + + string[] list; + + if (directionIn) + list = SteamVR_Input_ActionFile_ActionTypes.listIn; + else + list = SteamVR_Input_ActionFile_ActionTypes.listOut; + + + int selectedType = Array.IndexOf(list, selectedAction.type); + + int newSelectedType = EditorGUILayout.Popup(selectedType, list); + + if (selectedType == -1 && newSelectedType == -1) + newSelectedType = 0; + + if (selectedType != newSelectedType && newSelectedType != -1) + { + selectedAction.type = list[newSelectedType]; + } + + if (selectedAction.type == SteamVR_Input_ActionFile_ActionTypes.skeleton) + { + string currentSkeletonPath = selectedAction.skeleton; + if (string.IsNullOrEmpty(currentSkeletonPath) == false) + currentSkeletonPath = currentSkeletonPath.Replace("/", "\\"); + + int selectedSkeletonType = Array.IndexOf(SteamVR_Input_ActionFile_ActionTypes.listSkeletons, currentSkeletonPath); + int newSelectedSkeletonType = EditorGUILayout.Popup(selectedSkeletonType, SteamVR_Input_ActionFile_ActionTypes.listSkeletons); + + if (selectedSkeletonType == -1) + selectedSkeletonType = 0; + + if (selectedSkeletonType != newSelectedSkeletonType && newSelectedSkeletonType != -1) + { + selectedAction.skeleton = SteamVR_Input_ActionFile_ActionTypes.listSkeletons[newSelectedSkeletonType].Replace("\\", "/"); + } + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Required:"); + if (selectedActionIndex != -1) + { + int oldRequirement = (int)selectedAction.requirementEnum; + int newRequirement = GUILayout.SelectionGrid(oldRequirement, SteamVR_Input_ActionFile_Action.requirementValues, 1, EditorStyles.radioButton); + + if (oldRequirement != newRequirement) + { + selectedAction.requirementEnum = (SteamVR_Input_ActionFile_Action_Requirements)newRequirement; + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Localization:"); + localizationList.DoLayoutList(); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Localized String:"); + if (selectedLocalizationIndex != -1) + { + Dictionary localizationItems = SteamVR_Input.actionFile.localizationHelperList[selectedLocalizationIndex].items; + string oldValue = ""; + + if (localizationItems.ContainsKey(selectedAction.name)) + oldValue = localizationItems[selectedAction.name]; + + string newValue = EditorGUILayout.TextField(oldValue); + + if (string.IsNullOrEmpty(newValue)) + { + localizationItems.Remove(selectedAction.name); + } + else if (oldValue != newValue) + { + if (localizationItems.ContainsKey(selectedAction.name) == false) + localizationItems.Add(selectedAction.name, newValue); + else + localizationItems[selectedAction.name] = newValue; + } + } + + + EditorGUILayout.EndFadeGroup(); + } + + private void DrawSets() + { + EditorGUILayout.LabelField("Action Sets", headerLabelStyle); + EditorGUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionFile.action_sets.Count; actionSetIndex++) + { + if (selectedActionSet == actionSetIndex) + { + EditorGUILayout.BeginVertical(); + string newName = GUILayout.TextField(SteamVR_Input.actionFile.action_sets[actionSetIndex].shortName); + if (newName != SteamVR_Input.actionFile.action_sets[actionSetIndex].shortName) + { + string oldName = SteamVR_Input.actionFile.action_sets[actionSetIndex].name; + foreach (var action in SteamVR_Input.actionFile.actions) + { + if (action.actionSet == oldName) + action.SetNewActionSet(newName); + } + + SteamVR_Input.actionFile.action_sets[actionSetIndex].SetNewShortName(newName); + } + + EditorGUILayout.BeginHorizontal(); + + int selectedUsage = -1; + for (int valueIndex = 0; valueIndex < SteamVR_Input_ActionFile_ActionSet_Usages.listValues.Length; valueIndex++) + { + if (SteamVR_Input_ActionFile_ActionSet_Usages.listValues[valueIndex] == SteamVR_Input.actionFile.action_sets[actionSetIndex].usage) + { + selectedUsage = valueIndex; + break; + } + } + + int wasUsage = selectedUsage; + if (selectedUsage == -1) + selectedUsage = 1; + + selectedUsage = EditorGUILayout.Popup(selectedUsage, SteamVR_Input_ActionFile_ActionSet_Usages.listDescriptions); + + if (wasUsage != selectedUsage) + { + SteamVR_Input.actionFile.action_sets[actionSetIndex].usage = SteamVR_Input_ActionFile_ActionSet_Usages.listValues[selectedUsage]; + } + + EditorGUILayout.Space(); + + + bool removeSet = GUILayout.Button("-"); + if (removeSet) + { + bool confirm = EditorUtility.DisplayDialog("Confirmation", "Are you sure you want to delete this action set and all of its actions?.", "Delete", "Cancel"); + if (confirm) + { + //todo: this doesn't work + SteamVR_Input.actionFile.action_sets.RemoveAt(selectedActionSet); + selectedActionSet = -1; + selectedAction = null; + + InitializeLists(); + break; + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + } + else + { + bool pressedSet = GUILayout.Button(SteamVR_Input.actionFile.action_sets[actionSetIndex].shortName); + + if (pressedSet) + { + selectedActionSet = actionSetIndex; + + selectedActionIndex = -1; + selectedAction = null; + + InitializeLists(); + } + } + + if (actionSetIndex < SteamVR_Input.actionFile.action_sets.Count - 1) + GUILayout.FlexibleSpace(); + } + + EditorGUILayout.Space(); + + bool addSet = GUILayout.Button("+"); + + if (addSet) + { + SteamVR_Input_ActionFile_ActionSet newActionSet = new SteamVR_Input_ActionFile_ActionSet(); + newActionSet.name = SteamVR_Input_ActionFile_ActionSet.CreateNewName(); + + SteamVR_Input.actionFile.action_sets.Add(newActionSet); + + selectedActionSet = SteamVR_Input.actionFile.action_sets.Count - 1; + + selectedActionIndex = -1; + selectedAction = null; + + InitializeLists(); + } + + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndHorizontal(); + } + + private static MemberInfo GetMemberInfo(TModel model, Expression> expr) + { + return ((MemberExpression)expr.Body).Member; + } + + private void SaveFile() + { + SteamVR_Input.actionFile.SaveHelperLists(); + + SteamVR_Input.actionFile.Save(SteamVR_Input.GetActionsFilePath()); + + SteamVR_Input_ActionManifest_Manager.CleanBindings(true); + + Debug.Log("[SteamVR Input] Saved actions manifest successfully."); + + SteamVR_Input_Generator.BeginGeneration(); + } + + private void SanitizeActionFile() + { + foreach (var action in SteamVR_Input.actionFile.actions) + { + if (action.type != SteamVR_Input_ActionFile_ActionTypes.skeleton) + { + if (string.IsNullOrEmpty(action.skeleton) == false) + { + action.skeleton = null; //todo: shouldn't have skeleton data for non skeleton types I think + } + } + } + } + } + + public class SteamVR_Input_SettingsEditor : EditorWindow + { + public static void ShowWindow() + { + GetWindow(true, "SteamVR Input Settings", true); + } + + private GUIStyle headerLabelStyle = null; + private GUIStyle multiLineStyle = null; + private GUIStyle smallMultiLineStyle = null; + private void OnGUI() + { + if (headerLabelStyle == null) + headerLabelStyle = new GUIStyle(EditorStyles.boldLabel); + if (multiLineStyle == null) + multiLineStyle = new GUIStyle(EditorStyles.wordWrappedLabel); + if (smallMultiLineStyle == null) + { + smallMultiLineStyle = new GUIStyle(EditorStyles.wordWrappedLabel); + smallMultiLineStyle.fontSize = EditorStyles.miniLabel.fontSize; + smallMultiLineStyle.fontStyle = FontStyle.Italic; + } + + SteamVR_Input.InitializeFile(); + EditorGUILayout.Space(); + + + EditorGUILayout.LabelField("Actions manifest", headerLabelStyle); + EditorGUILayout.LabelField(string.Format("Path: {0}", SteamVR_Input.GetActionsFilePath(true))); + + DrawRefreshButton(); + + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + DrawPartial(); + + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + DrawOverwriteOption(); + + DrawDeleteUnusedActions(); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + bool delete = GUILayout.Button("Delete generated input folder"); + GUILayout.FlexibleSpace(); + bool showSettings = GUILayout.Button("SteamVR Settings"); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + if (delete) + { + bool confirm = EditorUtility.DisplayDialog("Confirmation", "Are you sure you want to delete the input code files? This may make your project unable to compile.", "Delete", "Cancel"); + if (confirm) + SteamVR_Input_Generator.DeleteGeneratedFolder(); + } + + if (showSettings) + { + Selection.activeObject = SteamVR_Settings.instance; + } + } + + private void DrawRefreshButton() + { + EditorGUILayout.BeginHorizontal(); + bool refresh = GUILayout.Button("Refresh"); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + if (refresh) + { + SteamVR_Input_EditorWindow.ReopenWindow(); + } + } + + private void DrawPartial() + { + EditorGUILayout.LabelField("Partial bindings", headerLabelStyle); + EditorGUILayout.LabelField("This is for SteamVR related asset packages. Here you can create a folder containing your current action manifest and associated bindings that will automatically query users to import into their project and add to their actions when loaded (as long as they have the SteamVR asset).", multiLineStyle); + EditorGUILayout.LabelField("note: Please create action sets specific to your asset to avoid collisions.", smallMultiLineStyle); + + bool create = GUILayout.Button("Create"); + if (create) + { + SteamVR_Input_CreatePartial.ShowWindow(); + } + } + + private void DrawOverwriteOption() + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Overwrite actions and bindings json files during build"); + + + bool overwrite = EditorPrefs.GetBool(SteamVR_Input_Generator.steamVRInputOverwriteBuildKey); + bool newOverwrite = EditorGUILayout.Toggle(overwrite); + + if (overwrite != newOverwrite) + { + EditorPrefs.SetBool(SteamVR_Input_Generator.steamVRInputOverwriteBuildKey, newOverwrite); + } + + EditorGUILayout.EndHorizontal(); + } + + private void DrawDeleteUnusedActions() + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Delete actions that are no longer in the action list during generation"); + + + bool deleteUnused = EditorPrefs.GetBool(SteamVR_Input_Generator.steamVRInputDeleteUnusedKey); + bool newDeleteUnused = EditorGUILayout.Toggle(deleteUnused); + + if (deleteUnused != newDeleteUnused) + { + EditorPrefs.SetBool(SteamVR_Input_Generator.steamVRInputDeleteUnusedKey, newDeleteUnused); + } + + EditorGUILayout.EndHorizontal(); + } + } + + public class SteamVR_Input_CreatePartial : EditorWindow + { + public static void ShowWindow() + { + GetWindow(true, "SteamVR Input Partial Bindings Creator", true); + } + + private GUIStyle headerLabelStyle = null; + private GUIStyle multiLineStyle = null; + private GUIStyle smallMultiLineStyle = null; + + private string folderName = null; + private int version = 1; + + private bool overwriteOldActions = true; + private bool removeOldVersionActions = true; + + private void OnGUI() + { + if (headerLabelStyle == null) + headerLabelStyle = new GUIStyle(EditorStyles.boldLabel); + if (multiLineStyle == null) + multiLineStyle = new GUIStyle(EditorStyles.wordWrappedLabel); + if (smallMultiLineStyle == null) + { + smallMultiLineStyle = new GUIStyle(EditorStyles.wordWrappedLabel); + smallMultiLineStyle.fontSize = EditorStyles.miniLabel.fontSize; + smallMultiLineStyle.fontStyle = FontStyle.Italic; + } + + if (folderName == null) + folderName = "SteamVR_" + SteamVR.GenerateCleanProductName(); + + SteamVR_Input.InitializeFile(); + EditorGUILayout.Space(); + + + EditorGUILayout.LabelField("Partial input bindings", headerLabelStyle); + EditorGUILayout.LabelField("When you create a partial bindings folder you can include that anywhere inside your asset package folder and it will automatically be found and imported to the user's project on load.", multiLineStyle); + EditorGUILayout.LabelField("note: You can rename the folder but do not rename any files inside.", smallMultiLineStyle); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + folderName = EditorGUILayout.TextField("Name", folderName); + + EditorGUILayout.Space(); + + version = EditorGUILayout.IntField("Version", version); + EditorGUILayout.LabelField("note: only whole numbers", smallMultiLineStyle); + + EditorGUILayout.Space(); + + overwriteOldActions = EditorGUILayout.Toggle("Overwrite old actions", overwriteOldActions); + EditorGUILayout.LabelField("If the person importing your asset package has a previous version of your package this determines whether or not to overwrite actions and bindings that have the same name.", smallMultiLineStyle); + + EditorGUILayout.Space(); + + removeOldVersionActions = EditorGUILayout.Toggle("Remove unused actions from old versions", overwriteOldActions); + EditorGUILayout.LabelField("If the person importing your asset package has a previous version of your package that has actions that are not used in the new version of your package this determines whether or not to delete those actions.", smallMultiLineStyle); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + bool create = GUILayout.Button("Create"); + + if (create) + { + SteamVR_Input_ActionManifest_Manager.CreatePartial(folderName, version, overwriteOldActions, removeOldVersionActions); + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs.meta new file mode 100644 index 00000000..51108e62 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_EditorWindow.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 03dc30b5b3080b44ab840459bbaf7b78 +timeCreated: 1521247554 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - skin: {fileID: 11400000, guid: 7836f978f062019499564a455654e74a, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs new file mode 100644 index 00000000..1a47bf8e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs @@ -0,0 +1,861 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Reflection; +using System.Linq.Expressions; +using UnityEditor.SceneManagement; +using UnityEditor.Callbacks; +using Valve.Newtonsoft.Json; + +namespace Valve.VR +{ +#pragma warning disable 0219 // variable assigned but not used. + + public static class SteamVR_Input_Generator + { + public const string steamVRInputOverwriteBuildKey = "SteamVR_Input_OverwriteBuild"; + public const string steamVRInputDeleteUnusedKey = "SteamVR_Input_DeleteUnused"; + + private const string actionSetClassNamePrefix = "SteamVR_Input_ActionSet_"; + + public const string generationNeedsReloadKey = "SteamVR_Input_GenerationNeedsReload"; + + private const string progressBarTitle = "SteamVR Input Generation"; + + public const string steamVRInputActionSetClassesFolder = "ActionSetClasses"; + public const string steamVRInputActionsClass = "SteamVR_Input_Actions"; + public const string steamVRInputActionSetsClass = "SteamVR_Input_ActionSets"; + public const string steamVRInputInitializationClass = "SteamVR_Input_Initialization"; + public const string steamVRActionsAssemblyDefinition = "SteamVR_Actions"; + + private static bool generating = false; + + public static void BeginGeneration() + { + generating = true; + fileChanged = false; + + SteamVR_Input_EditorWindow.SetProgressBarText("Beginning generation...", 0); + + GenerationStep_CreateActionSetClasses(); + GenerationStep_CreateHelperClasses(); + GenerationStep_CreateInitClass(); + GenerationStep_CreateAssemblyDefinition(); + DeleteUnusedScripts(); + + if (fileChanged) + EditorPrefs.SetBool(generationNeedsReloadKey, true); + + AssetDatabase.Refresh(); + + SteamVR_Input_EditorWindow.ClearProgressBar(); + generating = false; + } + + [DidReloadScripts] + private static void OnReload() + { + bool didGenerate = EditorPrefs.GetBool(generationNeedsReloadKey); + if (didGenerate) + { + EditorPrefs.SetBool(generationNeedsReloadKey, false); + + if (string.IsNullOrEmpty(EditorSceneManager.GetActiveScene().path) == false) + EditorApplication.delayCall += ReloadScene; + } + } + + + public static void ReloadScene() + { + EditorPrefs.SetBool(generationNeedsReloadKey, false); + + if (string.IsNullOrEmpty(EditorSceneManager.GetActiveScene().path) == false) + { + if (EditorSceneManager.GetActiveScene().isDirty) + { + EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo(); + } + + string previousPath = EditorSceneManager.GetActiveScene().path; + EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); + EditorSceneManager.OpenScene(previousPath); //reload open scene to avoid any weird serialization + } + } + + public static bool IsGenerating() + { + return generating; + } + + public static void CancelGeneration() + { + generating = false; + + } + + private static List setClasses = new List(); + + private static void GenerationStep_CreateInitClass() + { + CodeCompileUnit compileUnit = new CodeCompileUnit(); + + CodeTypeDeclaration inputClass = CreatePartialInputClass(compileUnit); + + CodeMemberMethod preinitMethod = CreateStaticMethod(inputClass, SteamVR_Input_Generator_Names.preinitializeMethodName, true); + + string steamVRInputClassName = typeof(SteamVR_Input).Name; + + AddStaticInvokeToMethod(preinitMethod, SteamVR_Input_Generator_Names.actionsClassName, startPreInitActionSetsMethodName); + AddStaticInvokeToMethod(preinitMethod, steamVRInputClassName, initializeActionSetDictionariesMethodName); + AddStaticInvokeToMethod(preinitMethod, SteamVR_Input_Generator_Names.actionsClassName, preInitActionsMethodName); + AddStaticInvokeToMethod(preinitMethod, SteamVR_Input_Generator_Names.actionsClassName, initializeActionsArraysMethodName); + AddStaticInvokeToMethod(preinitMethod, steamVRInputClassName, initializeActionDictionariesMethodName); + AddStaticInvokeToMethod(preinitMethod, steamVRInputClassName, finishPreInitActionSetsMethodName); + + // Build the output file name. + string fullSourceFilePath = GetSourceFilePath(steamVRInputInitializationClass); + CreateFile(fullSourceFilePath, compileUnit); + } + + private static void GenerationStep_CreateAssemblyDefinition() + { + string fullSourceFilePath = GetSourceFilePath(steamVRActionsAssemblyDefinition, ".asmdef"); + + if (File.Exists(fullSourceFilePath) == false) + { + SteamVR_Input_Unity_AssemblyFile_Definition actionsAssemblyDefinitionData = new SteamVR_Input_Unity_AssemblyFile_Definition(); + actionsAssemblyDefinitionData.autoReferenced = true; + string jsonText = JsonConvert.SerializeObject(actionsAssemblyDefinitionData, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }); + File.WriteAllText(fullSourceFilePath, jsonText); + } + } + + private static void GenerationStep_CreateActionSetClasses() + { + SteamVR_Input_EditorWindow.SetProgressBarText("Generating action set classes...", 0.25f); + + SteamVR_Input.InitializeFile(); + + CreateActionsSubFolder(); + + setClasses = GenerateActionSetClasses(); + + Debug.LogFormat("[SteamVR Input] Created input script set classes: {0}", setClasses.Count); + } + + private static void GenerationStep_CreateHelperClasses() + { + SteamVR_Input_EditorWindow.SetProgressBarText("Generating actions and actionsets classes...", 0.5f); + + GenerateActionHelpers(steamVRInputActionsClass); + GenerateActionSetsHelpers(steamVRInputActionSetsClass); + + string actionsFullpath = Path.Combine(GetClassPath(), steamVRInputActionsClass + ".cs"); + string actionSetsFullpath = Path.Combine(GetClassPath(), steamVRInputActionSetsClass + ".cs"); + + Debug.LogFormat("[SteamVR Input] Created input script main classes: {0} and {1}", actionsFullpath, actionSetsFullpath); + } + + + private static void DeleteUnusedScripts() + { + string folderPath = GetSubFolderPath(); + + string[] files = Directory.GetFiles(folderPath); + + List toDelete = new List(); + + for (int fileIndex = 0; fileIndex < files.Length; fileIndex++) + { + FileInfo file = new FileInfo(files[fileIndex]); + + if (file.Name.EndsWith(".cs") || file.Name.EndsWith(".cs.meta")) + { + bool isSet = false; + if (SteamVR_Input.actionFile.action_sets.Any(set => string.Equals(GetSetClassName(set) + ".cs", file.Name, StringComparison.CurrentCultureIgnoreCase) || + string.Equals(GetSetClassName(set) + ".cs.meta", file.Name, StringComparison.CurrentCultureIgnoreCase))) + { + isSet = true; + } + + bool isAction = false; + if (SteamVR_Input.actionFile.actions.Any(action => string.Equals(action.codeFriendlyName + ".cs", file.Name, StringComparison.CurrentCultureIgnoreCase) || + string.Equals(action.codeFriendlyName + ".cs.meta", file.Name, StringComparison.CurrentCultureIgnoreCase))) + { + + isAction = true; + } + + if (isSet == false && isAction == false) + { + toDelete.Add(files[fileIndex]); + } + } + } + + if (toDelete.Count > 0) + { + string filesToDelete = ""; + foreach (string file in toDelete) + filesToDelete += file + "\n"; + + bool confirm = EditorUtility.DisplayDialog("SteamVR Input", "Would you like to delete the following unused input files:\n" + filesToDelete, "Delete", "No"); + if (confirm) + { + foreach (string fileName in toDelete) + { + FileInfo file = new FileInfo(fileName); + file.IsReadOnly = false; + file.Delete(); + } + } + } + } + + private static void CreateActionsSubFolder() + { + string folderPath = GetSubFolderPath(); + if (Directory.Exists(folderPath) == false) + { + Directory.CreateDirectory(folderPath); + } + } + + public static void DeleteActionClassFiles() + { + DeleteActionClass(steamVRInputActionsClass); + DeleteActionClass(steamVRInputActionSetsClass); + + string folderPath = GetSubFolderPath(); + bool confirm = EditorUtility.DisplayDialog("Confirmation", "Are you absolutely sure you want to delete all code files in " + folderPath + "?", "Delete", "Cancel"); + if (confirm) + { + DeleteActionObjects("*.cs*"); + } + } + + public static void DeleteGeneratedFolder() + { + string generatedFolderPath = GetClassPath(); + string subFolderPath = GetSubFolderPath(); + bool confirm = EditorUtility.DisplayDialog("Confirmation", "Are you absolutely sure you want to delete all code files in " + generatedFolderPath + "?", "Delete", "Cancel"); + if (confirm) + { + DeleteActionObjects("*.cs*", generatedFolderPath); + + DeleteActionObjects("*.cs*", subFolderPath); + } + } + + public static void DeleteActionObjects(string filter, string folderPath = null) + { + if (folderPath == null) + folderPath = GetSubFolderPath(); + + string[] assets = Directory.GetFiles(folderPath, filter); + + for (int assetIndex = 0; assetIndex < assets.Length; assetIndex++) + { + AssetDatabase.DeleteAsset(assets[assetIndex]); + } + + Debug.LogFormat("[SteamVR Input] Deleted {0} files at path: {1}", assets.Length, folderPath); + } + + private static void DeleteActionClass(string className) + { + string filePath = GetSourceFilePath(className); + if (File.Exists(filePath) == true) + { + AssetDatabase.DeleteAsset(filePath); + Debug.Log("[SteamVR Input] Deleted: " + filePath); + } + else + { + Debug.Log("[SteamVR Input] No file found at: " + filePath); + } + } + + private static string GetTypeStringForAction(SteamVR_Input_ActionFile_Action action) + { + return GetTypeForAction(action).Name; + } + + private static Type GetTypeForAction(SteamVR_Input_ActionFile_Action action) + { + string actionType = action.type.ToLower(); + + if (SteamVR_Input_ActionFile_ActionTypes.boolean == actionType) + { + return typeof(SteamVR_Action_Boolean); + } + + if (SteamVR_Input_ActionFile_ActionTypes.vector1 == actionType) + { + return typeof(SteamVR_Action_Single); + } + + if (SteamVR_Input_ActionFile_ActionTypes.vector2 == actionType) + { + return typeof(SteamVR_Action_Vector2); + } + + if (SteamVR_Input_ActionFile_ActionTypes.vector3 == actionType) + { + return typeof(SteamVR_Action_Vector3); + } + + if (SteamVR_Input_ActionFile_ActionTypes.pose == actionType) + { + return typeof(SteamVR_Action_Pose); + } + + if (SteamVR_Input_ActionFile_ActionTypes.skeleton == actionType) + { + return typeof(SteamVR_Action_Skeleton); + } + + if (SteamVR_Input_ActionFile_ActionTypes.vibration == actionType) + { + return typeof(SteamVR_Action_Vibration); + } + + throw new System.Exception("unknown type (" + action.type + ") in actions file for action: " + action.name); + } + + private static string GetClassPath() + { + string path = Path.Combine(SteamVR.GetSteamVRFolderParentPath(), SteamVR_Settings.instance.steamVRInputPath); + + if (Directory.Exists(path) == false) + Directory.CreateDirectory(path); + + return path; + } + + private static string GetSubFolderPath() + { + return Path.Combine(GetClassPath(), steamVRInputActionSetClassesFolder); + } + + private static string GetSourceFilePath(string classname, string suffix = ".cs") + { + string sourceFileName = string.Format("{0}{1}", classname, suffix); + + return Path.Combine(GetClassPath(), sourceFileName); + } + + private static bool fileChanged = false; + private static void CreateFile(string fullPath, CodeCompileUnit compileUnit) + { + // Generate the code with the C# code provider. + CSharpCodeProvider provider = new CSharpCodeProvider(); + + // Build the output file name. + string fullSourceFilePath = fullPath; + //Debug.Log("[SteamVR] Writing class to: " + fullSourceFilePath); + + string path = GetClassPath(); + + string priorMD5 = null; + FileInfo file = new FileInfo(fullSourceFilePath); + if (file.Exists) + { + file.IsReadOnly = false; + priorMD5 = SteamVR_Utils.GetBadMD5HashFromFile(fullSourceFilePath); + } + + // Create a TextWriter to a StreamWriter to the output file. + using (StreamWriter sw = new StreamWriter(fullSourceFilePath, false)) + { + IndentedTextWriter tw = new IndentedTextWriter(sw, " "); + + // Generate source code using the code provider. + provider.GenerateCodeFromCompileUnit(compileUnit, tw, + new CodeGeneratorOptions() { BracingStyle = "C" }); + + // Close the output file. + tw.Close(); + + string newMD5 = SteamVR_Utils.GetBadMD5HashFromFile(fullSourceFilePath); + + if (priorMD5 != newMD5) + fileChanged = true; + } + + //Debug.Log("[SteamVR] Complete! Input class at: " + fullSourceFilePath); + } + + private const string getActionMethodParamName = "path"; + private const string skipStateUpdatesParamName = "skipStateAndEventUpdates"; + + private static List GenerateActionSetClasses() + { + List setClasses = new List(); + + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionFile.action_sets.Count; actionSetIndex++) + { + SteamVR_Input_ActionFile_ActionSet actionSet = SteamVR_Input.actionFile.action_sets[actionSetIndex]; + + CodeTypeDeclaration setClass = CreateActionSetClass(actionSet); + + setClasses.Add(setClass); + } + + return setClasses; + } + + private const string initializeActionDictionariesMethodName = "PreinitializeActionDictionaries"; + private const string initializeActionSetDictionariesMethodName = "PreinitializeActionSetDictionaries"; + + private const string preInitActionsMethodName = "PreInitActions"; + private const string initializeActionsArraysMethodName = "InitializeActionArrays"; + + private static void GenerateActionHelpers(string actionsClassFileName) + { + CodeCompileUnit compileUnit = new CodeCompileUnit(); + + CodeTypeDeclaration inputClass = CreatePartialInputClass(compileUnit); + + CodeArrayCreateExpression actionsArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action))); + + CodeArrayCreateExpression actionsInArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(ISteamVR_Action_In))); + + CodeArrayCreateExpression actionsOutArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(ISteamVR_Action_Out))); + + CodeArrayCreateExpression actionsVibrationArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Vibration))); + + CodeArrayCreateExpression actionsPoseArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Pose))); + + CodeArrayCreateExpression actionsSkeletonArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Skeleton))); + + CodeArrayCreateExpression actionsBooleanArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Boolean))); + + CodeArrayCreateExpression actionsSingleArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Single))); + + CodeArrayCreateExpression actionsVector2Array = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Vector2))); + + CodeArrayCreateExpression actionsVector3Array = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_Action_Vector3))); + + CodeArrayCreateExpression actionsNonPoseNonSkeletonArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(ISteamVR_Action_In))); + + + //add the getaction method to + CodeMemberMethod actionsArraysInitMethod = CreateStaticMethod(inputClass, initializeActionsArraysMethodName, false); + CodeMemberMethod actionsPreInitMethod = CreateStaticMethod(inputClass, preInitActionsMethodName, false); + + + + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionFile.action_sets.Count; actionSetIndex++) + { + SteamVR_Input_ActionFile_ActionSet actionSet = SteamVR_Input.actionFile.action_sets[actionSetIndex]; + string actionSetShortName = actionSet.shortName; + actionSetShortName = actionSetShortName.Substring(0, 1).ToLower() + actionSetShortName.Substring(1); + + for (int actionIndex = 0; actionIndex < actionSet.actionsList.Count; actionIndex++) + { + SteamVR_Input_ActionFile_Action action = actionSet.actionsList[actionIndex]; + string actionShortName = action.shortName; + + string typeName = GetTypeStringForAction(action); + + string codeFriendlyInstanceName; + if (actionSet.actionsList.Count(findAction => findAction.shortName == actionShortName) >= 2) + codeFriendlyInstanceName = string.Format("{0}_{1}_{2}", actionSetShortName, action.direction.ToString().ToLower(), actionShortName); + else + codeFriendlyInstanceName = string.Format("{0}_{1}", actionSetShortName, actionShortName); + + + CodeMemberField actionField = CreateFieldAndPropertyWrapper(inputClass, codeFriendlyInstanceName, typeName); + + AddAssignActionStatement(actionsPreInitMethod, inputClass.Name, actionField.Name, action.name, typeName); + + actionsArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + + if (action.direction == SteamVR_ActionDirections.In) + { + actionsInArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + + if (typeName == typeof(SteamVR_Action_Pose).Name) + { + actionsPoseArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + else if (typeName == typeof(SteamVR_Action_Skeleton).Name) + { + actionsSkeletonArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + else if (typeName == typeof(SteamVR_Action_Boolean).Name) + { + actionsBooleanArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + else if (typeName == typeof(SteamVR_Action_Single).Name) + { + actionsSingleArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + else if (typeName == typeof(SteamVR_Action_Vector2).Name) + { + actionsVector2Array.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + else if (typeName == typeof(SteamVR_Action_Vector3).Name) + { + actionsVector3Array.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + + if ((typeName == typeof(SteamVR_Action_Skeleton).Name) == false && (typeName == typeof(SteamVR_Action_Pose).Name) == false) + { + actionsNonPoseNonSkeletonArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + } + else + { + actionsVibrationArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + + actionsOutArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + } + } + + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsFieldName, actionsArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsInFieldName, actionsInArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsOutFieldName, actionsOutArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsVibrationFieldName, actionsVibrationArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsPoseFieldName, actionsPoseArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsBooleanFieldName, actionsBooleanArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsSingleFieldName, actionsSingleArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsVector2FieldName, actionsVector2Array); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsVector3FieldName, actionsVector3Array); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsSkeletonFieldName, actionsSkeletonArray); + AddAssignStatement(actionsArraysInitMethod, SteamVR_Input_Generator_Names.actionsNonPoseNonSkeletonIn, actionsNonPoseNonSkeletonArray); + + + // Build the output file name. + string fullSourceFilePath = GetSourceFilePath(actionsClassFileName); + CreateFile(fullSourceFilePath, compileUnit); + } + + + private const string startPreInitActionSetsMethodName = "StartPreInitActionSets"; + private const string finishPreInitActionSetsMethodName = "PreinitializeFinishActionSets"; + + private static void GenerateActionSetsHelpers(string actionSetsClassFileName) + { + CodeCompileUnit compileUnit = new CodeCompileUnit(); + + CodeTypeDeclaration inputClass = CreatePartialInputClass(compileUnit); + + + CodeMemberMethod startPreInitActionSetsMethod = CreateStaticMethod(inputClass, startPreInitActionSetsMethodName, false); + + CodeArrayCreateExpression actionSetsArray = new CodeArrayCreateExpression(new CodeTypeReference(typeof(SteamVR_ActionSet))); + + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionFile.action_sets.Count; actionSetIndex++) + { + SteamVR_Input_ActionFile_ActionSet actionSet = SteamVR_Input.actionFile.action_sets[actionSetIndex]; + + string shortName = GetValidIdentifier(actionSet.shortName); + + string codeFriendlyInstanceName = shortName; + + string setTypeName = GetSetClassName(actionSet); + + CodeMemberField actionSetField = CreateFieldAndPropertyWrapper(inputClass, shortName, setTypeName); + + AddAssignActionSetStatement(startPreInitActionSetsMethod, inputClass.Name, actionSetField.Name, actionSet.name, setTypeName); + + actionSetsArray.Initializers.Add(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), codeFriendlyInstanceName)); + } + + AddAssignStatement(startPreInitActionSetsMethod, SteamVR_Input_Generator_Names.actionSetsFieldName, actionSetsArray); + + // Build the output file name. + string fullSourceFilePath = GetSourceFilePath(actionSetsClassFileName); + CreateFile(fullSourceFilePath, compileUnit); + } + + private static CSharpCodeProvider provider = new CSharpCodeProvider(); + private static string GetValidIdentifier(string name) + { + string newName = name.Replace("-", "_"); + newName = provider.CreateValidIdentifier(newName); + return newName; + } + + public static MethodInfo GetMethodInfo(Expression> expression) + { + var member = expression.Body as MethodCallExpression; + + if (member != null) + return member.Method; + + throw new ArgumentException("Expression is not a method", "expression"); + } + + private static CodeTypeDeclaration CreatePartialInputClass(CodeCompileUnit compileUnit) + { + CodeNamespace codeNamespace = new CodeNamespace(typeof(SteamVR_Input).Namespace); + codeNamespace.Imports.Add(new CodeNamespaceImport("System")); + codeNamespace.Imports.Add(new CodeNamespaceImport("UnityEngine")); + compileUnit.Namespaces.Add(codeNamespace); + + CodeTypeDeclaration inputClass = new CodeTypeDeclaration(SteamVR_Input_Generator_Names.actionsClassName); + inputClass.IsPartial = true; + codeNamespace.Types.Add(inputClass); + + return inputClass; + } + + private static string GetSetClassName(SteamVR_Input_ActionFile_ActionSet set) + { + return actionSetClassNamePrefix + set.shortName; + } + + private const string inActionFieldPrefix = "in_"; + private const string outActionFieldPrefix = "out_"; + private const string setFinishPreInitializeMethodName = "FinishPreInitialize"; + private static CodeTypeDeclaration CreateActionSetClass(SteamVR_Input_ActionFile_ActionSet set) + { + CodeCompileUnit compileUnit = new CodeCompileUnit(); + + CodeNamespace codeNamespace = new CodeNamespace(typeof(SteamVR_Input).Namespace); + codeNamespace.Imports.Add(new CodeNamespaceImport("System")); + codeNamespace.Imports.Add(new CodeNamespaceImport("UnityEngine")); + compileUnit.Namespaces.Add(codeNamespace); + + CodeTypeDeclaration setClass = new CodeTypeDeclaration(GetSetClassName(set)); + setClass.BaseTypes.Add(typeof(SteamVR_ActionSet)); + setClass.Attributes = MemberAttributes.Public; + codeNamespace.Types.Add(setClass); + + string actionSetShortName = set.shortName; + actionSetShortName = actionSetShortName.Substring(0, 1).ToLower() + actionSetShortName.Substring(1); + + foreach (var inAction in set.actionsInList) + { + string inActionName = inAction.shortName; + if (set.actionsOutList.Any(outAction => inAction.shortName == outAction.shortName)) + inActionName = inActionFieldPrefix + inActionName; + + string actionClassPropertyName = string.Format("{0}_{1}", actionSetShortName, inActionName); + + CreateActionPropertyWrapper(setClass, SteamVR_Input_Generator_Names.actionsClassName, inActionName, actionClassPropertyName, inAction); + } + + foreach (var outAction in set.actionsOutList) + { + string outActionName = outAction.shortName; + if (set.actionsInList.Any(inAction => inAction.shortName == outAction.shortName)) + outActionName = outActionFieldPrefix + outActionName; + + string actionClassPropertyName = string.Format("{0}_{1}", actionSetShortName, outActionName); + + CreateActionPropertyWrapper(setClass, SteamVR_Input_Generator_Names.actionsClassName, outActionName, actionClassPropertyName, outAction); + } + + // Build the output file name. + string folderPath = GetSubFolderPath(); + string fullSourceFilePath = Path.Combine(folderPath, setClass.Name + ".cs"); + CreateFile(fullSourceFilePath, compileUnit); + + return setClass; + } + + private static CodeMemberMethod CreateStaticMethod(CodeTypeDeclaration inputClass, string methodName, bool isPublic) + { + CodeMemberMethod method = new CodeMemberMethod(); + method.Name = methodName; + + if (isPublic) + method.Attributes = MemberAttributes.Public | MemberAttributes.Static; + else + method.Attributes = MemberAttributes.Private | MemberAttributes.Static; + + inputClass.Members.Add(method); + return method; + } + + private static CodeMemberMethod CreateStaticConstructorMethod(CodeTypeDeclaration inputClass) + { + CodeTypeConstructor method = new CodeTypeConstructor(); + method.Attributes = MemberAttributes.Static; + + inputClass.Members.Add(method); + return method; + } + + private static CodeMemberField CreateField(CodeTypeDeclaration inputClass, string fieldName, Type fieldType, bool isStatic) + { + if (fieldType == null) + Debug.Log("null fieldType"); + + CodeMemberField field = new CodeMemberField(); + field.Name = fieldName; + field.Type = new CodeTypeReference(fieldType); + field.Attributes = MemberAttributes.Public; + if (isStatic) + field.Attributes |= MemberAttributes.Static; + + inputClass.Members.Add(field); + + return field; + } + + private static CodeMemberField CreateFieldAndPropertyWrapper(CodeTypeDeclaration inputClass, string name, string type) + { + CodeMemberField actionField = CreatePrivateField(inputClass, name, type, true); + + CodeMemberProperty actionProperty = CreateStaticProperty(inputClass, name, type, actionField); + + return actionField; + } + + private static CodeMemberProperty CreateStaticProperty(CodeTypeDeclaration inputClass, string propertyName, string propertyType, CodeMemberField privateField) + { + CodeMemberProperty property = new CodeMemberProperty(); + property.Name = propertyName; + property.Type = new CodeTypeReference(propertyType); + property.Attributes = MemberAttributes.Public | MemberAttributes.Static; + + CodeFieldReferenceExpression fieldReference = new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(inputClass.Name), privateField.Name); + CodeMethodInvokeExpression invokeExpression = new CodeMethodInvokeExpression(fieldReference, "GetCopy"); + invokeExpression.Method.TypeArguments.Add(property.Type); + + CodeMethodReturnStatement returnStatement = new CodeMethodReturnStatement(invokeExpression); + + property.GetStatements.Add(returnStatement); + + inputClass.Members.Add(property); + + return property; + } + + private static CodeMemberProperty CreateActionPropertyWrapper(CodeTypeDeclaration addToClass, string actionClass, string propertyName, string actionClassFieldName, SteamVR_Input_ActionFile_Action action) + { + string propertyType = GetTypeStringForAction(action); + + CodeMemberProperty property = new CodeMemberProperty(); + property.Name = propertyName; + property.Type = new CodeTypeReference(propertyType); + property.Attributes = MemberAttributes.Public; + + CodeFieldReferenceExpression fieldReference = new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(actionClass), actionClassFieldName); + + CodeMethodReturnStatement returnStatement = new CodeMethodReturnStatement(fieldReference); + + property.GetStatements.Add(returnStatement); + + addToClass.Members.Add(property); + + return property; + } + + private const string privateFieldPrefix = "p_"; + private static CodeMemberField CreatePrivateField(CodeTypeDeclaration inputClass, string fieldName, string fieldType, bool isStatic) + { + return CreateField(inputClass, privateFieldPrefix + fieldName, fieldType, isStatic, false); + } + + private static CodeMemberField CreateField(CodeTypeDeclaration inputClass, string fieldName, string fieldType, bool isStatic, bool isPublic = true) + { + CodeMemberField field = new CodeMemberField(); + field.Name = fieldName; + field.Type = new CodeTypeReference(fieldType); + if (isPublic) + field.Attributes = MemberAttributes.Public; + else + field.Attributes = MemberAttributes.Private; + + if (isStatic) + field.Attributes |= MemberAttributes.Static; + + inputClass.Members.Add(field); + + return field; + } + + private static CodeMethodInvokeExpression AddStaticInvokeToMethod(CodeMemberMethod methodToAddTo, string classToInvoke, string invokeMethodName) + { + CodeMethodInvokeExpression invokeMethod = new CodeMethodInvokeExpression(new CodeMethodReferenceExpression( + new CodeTypeReferenceExpression(classToInvoke), invokeMethodName)); + + methodToAddTo.Statements.Add(invokeMethod); + + return invokeMethod; + } + + private static void AddAssignStatement(CodeMemberMethod methodToAddTo, string fieldToAssign, CodeArrayCreateExpression array) + { + methodToAddTo.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_Input)), fieldToAssign), array)); + } + + private const string createActionMethodName = "Create"; + private const string createActionSetMethodName = "Create"; + private const string getActionFromPathMethodName = "GetActionFromPath"; + + //grab = SteamVR_Action.Create("path"); + private static void AddAssignActionStatement(CodeMemberMethod methodToAddTo, string actionClassName, string fieldToAssign, string actionPath, string actionType) + { + CodeMethodInvokeExpression invokeMethod = new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_Action).Name), createActionMethodName)); + + invokeMethod.Method.TypeArguments.Add(actionType); + invokeMethod.Parameters.Add(new CodePrimitiveExpression(actionPath)); + + methodToAddTo.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(actionClassName), fieldToAssign), new CodeCastExpression(new CodeTypeReference(actionType), invokeMethod))); + } + private static void AddAssignActionSetStatement(CodeMemberMethod methodToAddTo, string actionClassName, string fieldToAssign, string actionSetName, string actionSetType) + { + CodeMethodInvokeExpression invokeMethod = new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_ActionSet).Name), createActionSetMethodName)); + + invokeMethod.Method.TypeArguments.Add(actionSetType); + invokeMethod.Parameters.Add(new CodePrimitiveExpression(actionSetName)); + + methodToAddTo.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(actionClassName), fieldToAssign), new CodeCastExpression(new CodeTypeReference(actionSetType), invokeMethod))); + } + private static void AddAssignLocalActionStatement(CodeMemberMethod methodToAddTo, string fieldToAssign, string actionPath, string actionType, bool create) + { + CodeMethodInvokeExpression invokeMethod; + + if (create) + invokeMethod = new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_Action).Name), createActionMethodName)); + else + invokeMethod = new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_Input).Name), getActionFromPathMethodName)); + + invokeMethod.Method.TypeArguments.Add(actionType); + invokeMethod.Parameters.Add(new CodePrimitiveExpression(actionPath)); + + methodToAddTo.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), fieldToAssign), new CodeCastExpression(new CodeTypeReference(actionType), invokeMethod))); + } + private static void AddAssignNewInstanceStatement(CodeMemberMethod methodToAddTo, string fieldToAssign, string fieldType) + { + CodeObjectCreateExpression createExpression = new CodeObjectCreateExpression(new CodeTypeReference(fieldType)); + + methodToAddTo.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), fieldToAssign), createExpression)); + } + + private static CodeConditionStatement CreateStringCompareStatement(CodeMemberMethod methodToAddTo, string action, string paramName, string returnActionName) + { + MethodInfo stringEqualsMethodInfo = GetMethodInfo(set => string.Equals(null, null, StringComparison.CurrentCultureIgnoreCase)); + CodeTypeReferenceExpression stringType = new CodeTypeReferenceExpression(typeof(string)); + CodePrimitiveExpression actionName = new CodePrimitiveExpression(action); + CodeVariableReferenceExpression pathName = new CodeVariableReferenceExpression(paramName); + CodeVariableReferenceExpression caseInvariantName = new CodeVariableReferenceExpression("StringComparison.CurrentCultureIgnoreCase"); + CodeMethodInvokeExpression stringCompare = new CodeMethodInvokeExpression(stringType, stringEqualsMethodInfo.Name, pathName, actionName, caseInvariantName); + CodeMethodReturnStatement returnAction = new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(SteamVR_Input)), returnActionName)); + + CodeConditionStatement condition = new CodeConditionStatement(stringCompare, returnAction); + methodToAddTo.Statements.Add(condition); + + return condition; + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs.meta new file mode 100644 index 00000000..bbcb7abe --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_Generator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dcf3113e82474c541960a24c222f07b3 +timeCreated: 1521479845 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs new file mode 100644 index 00000000..b45234d7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs @@ -0,0 +1,294 @@ +using UnityEditor; +using UnityEngine; + +using System.CodeDom; +using Microsoft.CSharp; +using System.IO; +using System.CodeDom.Compiler; + +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.Linq.Expressions; +using System; +using UnityEditorInternal; + +namespace Valve.VR +{ + public class SteamVR_Input_LiveWindow : EditorWindow + { + private GUIStyle labelStyle; + private GUIStyle setLabelStyle; + + [MenuItem("Window/SteamVR Input Live View")] + public static void ShowWindow() + { + GetWindow(false, "SteamVR Input Live View", true); + } + + private void OnInspectorUpdate() + { + Repaint(); + } + + private Vector2 scrollPosition; + + private Dictionary sourceFoldouts = null; + private Dictionary> setFoldouts = null; + + Color inactiveSetColor = Color.Lerp(Color.red, Color.white, 0.5f); + Color actionUnboundColor = Color.red; + Color actionChangedColor = Color.green; + Color actionNotUpdatingColor = Color.yellow; + + private void DrawMap() + { + EditorGUILayout.BeginHorizontal(); + //GUILayout.FlexibleSpace(); + + GUI.backgroundColor = actionUnboundColor; + EditorGUILayout.LabelField("Not Bound", labelStyle); + + GUILayout.FlexibleSpace(); + + GUI.backgroundColor = inactiveSetColor; + EditorGUILayout.LabelField("Inactive", labelStyle); + + GUILayout.FlexibleSpace(); + + GUI.backgroundColor = actionNotUpdatingColor; + EditorGUILayout.LabelField("Not Used Yet", labelStyle); + + GUILayout.FlexibleSpace(); + + GUI.backgroundColor = actionChangedColor; + EditorGUILayout.LabelField("Changed", labelStyle); + + //GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + } + + private void OnGUI() + { + if (SteamVR_Input.actionSets == null) + { + EditorGUILayout.LabelField("Must first generate actions. Open SteamVR Input window."); + return; + } + + bool startUpdatingSourceOnAccess = SteamVR_Action.startUpdatingSourceOnAccess; + SteamVR_Action.startUpdatingSourceOnAccess = false; + + if (labelStyle == null) + { + labelStyle = new GUIStyle(EditorStyles.textField); + labelStyle.normal.background = Texture2D.whiteTexture; + + setLabelStyle = new GUIStyle(EditorStyles.label); + setLabelStyle.wordWrap = true; + setLabelStyle.normal.background = Texture2D.whiteTexture; + } + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); + + Color defaultColor = GUI.backgroundColor; + + SteamVR_ActionSet[] actionSets = SteamVR_Input.actionSets; + SteamVR_Input_Sources[] sources = SteamVR_Input_Source.GetAllSources(); + + if (sourceFoldouts == null) + { + sourceFoldouts = new Dictionary(); + setFoldouts = new Dictionary>(); + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + sourceFoldouts.Add(sources[sourceIndex], false); + setFoldouts.Add(sources[sourceIndex], new Dictionary()); + + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet set = actionSets[actionSetIndex]; + setFoldouts[sources[sourceIndex]].Add(set.GetShortName(), true); + } + } + + sourceFoldouts[SteamVR_Input_Sources.Any] = true; + sourceFoldouts[SteamVR_Input_Sources.LeftHand] = true; + sourceFoldouts[SteamVR_Input_Sources.RightHand] = true; + } + + DrawMap(); + + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + SteamVR_Input_Sources source = sources[sourceIndex]; + sourceFoldouts[source] = EditorGUILayout.Foldout(sourceFoldouts[source], source.ToString()); + + if (sourceFoldouts[source] == false) + continue; + + EditorGUI.indentLevel++; + + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet set = actionSets[actionSetIndex]; + bool setActive = set.IsActive(source); + string activeText = setActive ? "Active" : "Inactive"; + float setLastChanged = set.GetTimeLastChanged(); + + if (setLastChanged != -1) + { + float timeSinceLastChanged = Time.realtimeSinceStartup - setLastChanged; + if (timeSinceLastChanged < 1) + { + Color blendColor = setActive ? Color.green : inactiveSetColor; + Color setColor = Color.Lerp(blendColor, defaultColor, timeSinceLastChanged); + GUI.backgroundColor = setColor; + } + } + + EditorGUILayout.BeginHorizontal(); + setFoldouts[source][set.GetShortName()] = EditorGUILayout.Foldout(setFoldouts[source][set.GetShortName()], set.GetShortName()); + + EditorGUILayout.LabelField(activeText, labelStyle); + + GUI.backgroundColor = defaultColor; + EditorGUILayout.EndHorizontal(); + + if (setFoldouts[source][set.GetShortName()] == false) + continue; + + EditorGUI.indentLevel++; + + for (int actionIndex = 0; actionIndex < set.allActions.Length; actionIndex++) + { + SteamVR_Action action = set.allActions[actionIndex]; + if (source != SteamVR_Input_Sources.Any && action is SteamVR_Action_Skeleton) + continue; + + bool isUpdating = action.IsUpdating(source); + bool inAction = action is ISteamVR_Action_In; + + bool noData = false; + if (inAction && isUpdating == false) + { + GUI.backgroundColor = Color.yellow; + noData = true; + } + else + { + bool actionBound = action.GetActiveBinding(source); + if (setActive == false) + { + GUI.backgroundColor = inactiveSetColor; + } + else if (actionBound == false) + { + GUI.backgroundColor = Color.red; + noData = true; + } + } + + if (noData) + { + EditorGUILayout.LabelField(action.GetShortName(), "-", labelStyle); + GUI.backgroundColor = defaultColor; + continue; + } + + float actionLastChanged = action.GetTimeLastChanged(source); + + string actionText = ""; + + float timeSinceLastChanged = -1; + + if (actionLastChanged != -1) + { + timeSinceLastChanged = Time.realtimeSinceStartup - actionLastChanged; + + if (timeSinceLastChanged < 1) + { + Color setColor = Color.Lerp(Color.green, defaultColor, timeSinceLastChanged); + GUI.backgroundColor = setColor; + } + } + + + if (action is SteamVR_Action_Boolean) + { + SteamVR_Action_Boolean actionBoolean = (SteamVR_Action_Boolean)action; + actionText = actionBoolean.GetState(source).ToString(); + } + else if (action is SteamVR_Action_Single) + { + SteamVR_Action_Single actionSingle = (SteamVR_Action_Single)action; + actionText = actionSingle.GetAxis(source).ToString("0.0000"); + } + else if (action is SteamVR_Action_Vector2) + { + SteamVR_Action_Vector2 actionVector2 = (SteamVR_Action_Vector2)action; + actionText = string.Format("({0:0.0000}, {1:0.0000})", actionVector2.GetAxis(source).x, actionVector2.GetAxis(source).y); + } + else if (action is SteamVR_Action_Vector3) + { + SteamVR_Action_Vector3 actionVector3 = (SteamVR_Action_Vector3)action; + Vector3 axis = actionVector3.GetAxis(source); + actionText = string.Format("({0:0.0000}, {1:0.0000}, {2:0.0000})", axis.x, axis.y, axis.z); + } + else if (action is SteamVR_Action_Pose) + { + SteamVR_Action_Pose actionPose = (SteamVR_Action_Pose)action; + Vector3 position = actionPose.GetLocalPosition(source); + Quaternion rotation = actionPose.GetLocalRotation(source); + actionText = string.Format("({0:0.0000}, {1:0.0000}, {2:0.0000}) : ({3:0.0000}, {4:0.0000}, {5:0.0000}, {6:0.0000})", + position.x, position.y, position.z, + rotation.x, rotation.y, rotation.z, rotation.w); + } + else if (action is SteamVR_Action_Skeleton) + { + SteamVR_Action_Skeleton actionSkeleton = (SteamVR_Action_Skeleton)action; + Vector3 position = actionSkeleton.GetLocalPosition(source); + Quaternion rotation = actionSkeleton.GetLocalRotation(source); + actionText = string.Format("({0:0.0000}, {1:0.0000}, {2:0.0000}) : ({3:0.0000}, {4:0.0000}, {5:0.0000}, {6:0.0000})", + position.x, position.y, position.z, + rotation.x, rotation.y, rotation.z, rotation.w); + } + else if (action is SteamVR_Action_Vibration) + { + //SteamVR_Input_Action_Vibration actionVibration = (SteamVR_Input_Action_Vibration)action; + + if (timeSinceLastChanged == -1) + actionText = "never used"; + + actionText = string.Format("{0:0} seconds since last used", timeSinceLastChanged); + } + + EditorGUILayout.LabelField(action.GetShortName(), actionText, labelStyle); + GUI.backgroundColor = defaultColor; + } + + EditorGUI.indentLevel--; + EditorGUILayout.Space(); + } + + + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Active Action Set List"); + EditorGUI.indentLevel++; + EditorGUILayout.LabelField(SteamVR_ActionSet_Manager.debugActiveSetListText, setLabelStyle); + EditorGUI.indentLevel--; + + EditorGUILayout.Space(); + + EditorGUILayout.EndScrollView(); + + SteamVR_Action.startUpdatingSourceOnAccess = startUpdatingSourceOnAccess; + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs.meta new file mode 100644 index 00000000..ca390862 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_LiveWindow.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 4f3a55cce07b5da49ad2dfb86baea564 +timeCreated: 1521569618 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - skin: {fileID: 11400000, guid: 7836f978f062019499564a455654e74a, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs new file mode 100644 index 00000000..2c7ffd26 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs @@ -0,0 +1,54 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using UnityEditor.Callbacks; +using System.IO; + +namespace Valve.VR +{ + public class SteamVR_Input_PostProcessBuild + { + [PostProcessBuildAttribute(1)] + public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) + { + + } + + private static void UpdateAppKey(string newFilePath, string executableName) + { + if (File.Exists(newFilePath)) + { + string jsonText = System.IO.File.ReadAllText(newFilePath); + + string findString = "\"app_key\" : \""; + int stringStart = jsonText.IndexOf(findString); + + if (stringStart == -1) + { + findString = findString.Replace(" ", ""); + stringStart = jsonText.IndexOf(findString); + + if (stringStart == -1) + return; //no app key + } + + stringStart += findString.Length; + int stringEnd = jsonText.IndexOf("\"", stringStart); + + int stringLength = stringEnd - stringStart; + + string currentAppKey = jsonText.Substring(stringStart, stringLength); + + if (string.Equals(currentAppKey, SteamVR_Settings.instance.editorAppKey, System.StringComparison.CurrentCultureIgnoreCase) == false) + { + jsonText = jsonText.Replace(currentAppKey, SteamVR_Settings.instance.editorAppKey); + + FileInfo file = new FileInfo(newFilePath); + file.IsReadOnly = false; + + File.WriteAllText(newFilePath, jsonText); + } + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs.meta new file mode 100644 index 00000000..e78809c5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Input_PostProcessBuild.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7397a60f6d7fe3942bf26563dad77fe2 +timeCreated: 1526670145 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs new file mode 100644 index 00000000..7df6569b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs @@ -0,0 +1,1084 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEditor; +using UnityEngine; + +namespace Valve.VR +{ + + [CustomEditor(typeof(SteamVR_Skeleton_Poser))] + public class SteamVR_Skeleton_PoserEditor : Editor + { + private SerializedProperty skeletonMainPoseProperty; + private SerializedProperty skeletonAdditionalPosesProperty; + + private SerializedProperty showLeftPreviewProperty; + private SerializedProperty showRightPreviewProperty; + + private SerializedProperty previewLeftInstanceProperty; + private SerializedProperty previewRightInstanceProperty; + + private SerializedProperty previewLeftHandPrefab; + private SerializedProperty previewRightHandPrefab; + + private SerializedProperty previewPoseSelection; + + private SerializedProperty poseEditorExpanded; + private SerializedProperty blendEditorExpanded; + + private SerializedProperty poserScale; + + + + private SerializedProperty blendingBehaviourArray; + + + Texture handTexL; + Texture handTexR; + + + private SteamVR_Skeleton_Poser poser; + + private bool PoseChanged = false; + + protected void OnEnable() + { + skeletonMainPoseProperty = serializedObject.FindProperty("skeletonMainPose"); + skeletonAdditionalPosesProperty = serializedObject.FindProperty("skeletonAdditionalPoses"); + + showLeftPreviewProperty = serializedObject.FindProperty("showLeftPreview"); + showRightPreviewProperty = serializedObject.FindProperty("showRightPreview"); + + previewLeftInstanceProperty = serializedObject.FindProperty("previewLeftInstance"); + previewRightInstanceProperty = serializedObject.FindProperty("previewRightInstance"); + + previewLeftHandPrefab = serializedObject.FindProperty("overridePreviewLeftHandPrefab"); + previewRightHandPrefab = serializedObject.FindProperty("overridePreviewRightHandPrefab"); + + previewPoseSelection = serializedObject.FindProperty("previewPoseSelection"); + + poseEditorExpanded = serializedObject.FindProperty("poseEditorExpanded"); + blendEditorExpanded = serializedObject.FindProperty("blendEditorExpanded"); + + poserScale = serializedObject.FindProperty("scale"); + + + blendingBehaviourArray = serializedObject.FindProperty("blendingBehaviours"); + + + poser = (SteamVR_Skeleton_Poser)target; + } + + protected void LoadDefaultPreviewHands() + { + if (previewLeftHandPrefab.objectReferenceValue == null) + { + previewLeftHandPrefab.objectReferenceValue = SteamVR_Settings.instance.previewHandLeft; + } + + if (previewRightHandPrefab.objectReferenceValue == null) + { + previewRightHandPrefab.objectReferenceValue = SteamVR_Settings.instance.previewHandRight; + } + } + + protected void UpdatePreviewHand(SerializedProperty instanceProperty, SerializedProperty showPreviewProperty, GameObject previewPrefab, SteamVR_Skeleton_Pose_Hand handData, SteamVR_Skeleton_Pose sourcePose, bool forceUpdate) + { + GameObject preview = instanceProperty.objectReferenceValue as GameObject; + //EditorGUILayout.PropertyField(showPreviewProperty); + + if (showPreviewProperty.boolValue) + { + if (forceUpdate && preview != null) + { + DestroyImmediate(preview); + } + + if (preview == null) + { + preview = GameObject.Instantiate(previewPrefab); + preview.transform.localScale = Vector3.one * poserScale.floatValue; + preview.transform.parent = poser.transform; + preview.transform.localPosition = Vector3.zero; + preview.transform.localRotation = Quaternion.identity; + + SteamVR_Behaviour_Skeleton previewSkeleton = null; + + if (preview != null) + previewSkeleton = preview.GetComponent(); + + if (previewSkeleton != null) + { + if (handData.bonePositions == null || handData.bonePositions.Length == 0) + { + SteamVR_Skeleton_Pose poseResource = (SteamVR_Skeleton_Pose)Resources.Load("ReferencePose_OpenHand"); + DeepCopyPose(poseResource, sourcePose); + EditorUtility.SetDirty(sourcePose); + } + + preview.transform.localPosition = Vector3.zero; + preview.transform.localRotation = Quaternion.identity; + preview.transform.parent = null; + preview.transform.localScale = Vector3.one * poserScale.floatValue; + preview.transform.parent = poser.transform; + + preview.transform.localRotation = Quaternion.Inverse(handData.rotation); + preview.transform.position = preview.transform.TransformPoint(-handData.position); + + + for (int boneIndex = 0; boneIndex < handData.bonePositions.Length; boneIndex++) + { + Transform bone = previewSkeleton.GetBone(boneIndex); + bone.localPosition = handData.bonePositions[boneIndex]; + bone.localRotation = handData.boneRotations[boneIndex]; + } + } + SceneView.RepaintAll(); + instanceProperty.objectReferenceValue = preview; + } + } + else + { + if (preview != null) + { + DestroyImmediate(preview); + SceneView.RepaintAll(); + } + } + } + + protected void ZeroTransformParents(Transform toZero, Transform stopAt) + { + if (toZero == null) + return; + + toZero.localPosition = Vector3.zero; + toZero.localRotation = Quaternion.identity; + + if (toZero == stopAt) + return; + + ZeroTransformParents(toZero.parent, stopAt); + } + + protected EVRSkeletalReferencePose defaultReferencePose = EVRSkeletalReferencePose.OpenHand; + protected EVRSkeletalReferencePose forceToReferencePose = EVRSkeletalReferencePose.OpenHand; + + protected void SaveHandData(SteamVR_Skeleton_Pose_Hand handData, SteamVR_Behaviour_Skeleton thisSkeleton) + { + handData.position = thisSkeleton.transform.InverseTransformPoint(poser.transform.position); + //handData.position = thisSkeleton.transform.localPosition; + handData.rotation = Quaternion.Inverse(thisSkeleton.transform.localRotation); + + handData.bonePositions = new Vector3[SteamVR_Action_Skeleton.numBones]; + handData.boneRotations = new Quaternion[SteamVR_Action_Skeleton.numBones]; + + for (int boneIndex = 0; boneIndex < SteamVR_Action_Skeleton.numBones; boneIndex++) + { + Transform bone = thisSkeleton.GetBone(boneIndex); + handData.bonePositions[boneIndex] = bone.localPosition; + handData.boneRotations[boneIndex] = bone.localRotation; + } + + EditorUtility.SetDirty(activePose); + } + + protected void DrawHand(bool showHand, SteamVR_Skeleton_Pose_Hand handData, SteamVR_Skeleton_Pose_Hand otherData, bool getFromOpposite, SerializedProperty showPreviewProperty) + { + SteamVR_Behaviour_Skeleton thisSkeleton; + SteamVR_Behaviour_Skeleton oppositeSkeleton; + string thisSourceString; + string oppositeSourceString; + + if (handData.inputSource == SteamVR_Input_Sources.LeftHand) + { + thisSkeleton = leftSkeleton; + thisSourceString = "Left Hand"; + oppositeSourceString = "Right Hand"; + oppositeSkeleton = rightSkeleton; + } + else + { + thisSkeleton = rightSkeleton; + thisSourceString = "Right Hand"; + oppositeSourceString = "Left Hand"; + oppositeSkeleton = leftSkeleton; + } + + + if (showHand) + { + if (getFromOpposite) + { + bool confirm = EditorUtility.DisplayDialog("SteamVR", string.Format("This will overwrite your current {0} skeleton data. (with data from the {1} skeleton)", thisSourceString, oppositeSourceString), "Overwrite", "Cancel"); + if (confirm) + { + Vector3 reflectedPosition = new Vector3(-oppositeSkeleton.transform.localPosition.x, oppositeSkeleton.transform.localPosition.y, oppositeSkeleton.transform.localPosition.z); + thisSkeleton.transform.localPosition = reflectedPosition; + + Quaternion oppositeRotation = oppositeSkeleton.transform.localRotation; + Quaternion reflectedRotation = new Quaternion(-oppositeRotation.x, oppositeRotation.y, oppositeRotation.z, -oppositeRotation.w); + thisSkeleton.transform.localRotation = reflectedRotation; + + + for (int boneIndex = 0; boneIndex < SteamVR_Action_Skeleton.numBones; boneIndex++) + { + Transform boneThis = thisSkeleton.GetBone(boneIndex); + Transform boneOpposite = oppositeSkeleton.GetBone(boneIndex); + + boneThis.localPosition = boneOpposite.localPosition; + boneThis.localRotation = boneOpposite.localRotation; + + } + + handData.thumbFingerMovementType = otherData.thumbFingerMovementType; + handData.indexFingerMovementType = otherData.indexFingerMovementType; + handData.middleFingerMovementType = otherData.middleFingerMovementType; + handData.ringFingerMovementType = otherData.ringFingerMovementType; + handData.pinkyFingerMovementType = otherData.pinkyFingerMovementType; + + EditorUtility.SetDirty(poser.skeletonMainPose); + } + } + + } + + EditorGUIUtility.labelWidth = 120; + SteamVR_Skeleton_FingerExtensionTypes newThumb = (SteamVR_Skeleton_FingerExtensionTypes)EditorGUILayout.EnumPopup("Thumb movement", handData.thumbFingerMovementType); + SteamVR_Skeleton_FingerExtensionTypes newIndex = (SteamVR_Skeleton_FingerExtensionTypes)EditorGUILayout.EnumPopup("Index movement", handData.indexFingerMovementType); + SteamVR_Skeleton_FingerExtensionTypes newMiddle = (SteamVR_Skeleton_FingerExtensionTypes)EditorGUILayout.EnumPopup("Middle movement", handData.middleFingerMovementType); + SteamVR_Skeleton_FingerExtensionTypes newRing = (SteamVR_Skeleton_FingerExtensionTypes)EditorGUILayout.EnumPopup("Ring movement", handData.ringFingerMovementType); + SteamVR_Skeleton_FingerExtensionTypes newPinky = (SteamVR_Skeleton_FingerExtensionTypes)EditorGUILayout.EnumPopup("Pinky movement", handData.pinkyFingerMovementType); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(showPreviewProperty); + EditorGUIUtility.labelWidth = 0; + + if (newThumb != handData.thumbFingerMovementType || newIndex != handData.indexFingerMovementType || + newMiddle != handData.middleFingerMovementType || newRing != handData.ringFingerMovementType || + newPinky != handData.pinkyFingerMovementType) + { + handData.thumbFingerMovementType = newThumb; + handData.indexFingerMovementType = newIndex; + handData.middleFingerMovementType = newMiddle; + handData.ringFingerMovementType = newRing; + handData.pinkyFingerMovementType = newPinky; + + EditorUtility.SetDirty(poser.skeletonMainPose); + } + } + + protected void DrawPoseControlButtons() + { + GameObject leftInstance = previewLeftInstanceProperty.objectReferenceValue as GameObject; + leftSkeleton = null; + + if (leftInstance != null) + leftSkeleton = leftInstance.GetComponent(); + + GameObject rightInstance = previewRightInstanceProperty.objectReferenceValue as GameObject; + rightSkeleton = null; + + if (rightInstance != null) + rightSkeleton = rightInstance.GetComponent(); + + + + //only allow saving if a hand is opened for editing + EditorGUI.BeginDisabledGroup(showRightPreviewProperty.boolValue == false && showLeftPreviewProperty.boolValue == false); + GUI.color = new Color(0.9f, 1.0f, 0.9f); + // save both hands at once, or whichever are being edited + bool save = GUILayout.Button(string.Format("Save Pose")); + if (save) + { + if (showRightPreviewProperty.boolValue) + SaveHandData(activePose.rightHand, rightSkeleton); + if (showLeftPreviewProperty.boolValue) + SaveHandData(activePose.leftHand, leftSkeleton); + } + GUI.color = Color.white; + EditorGUI.EndDisabledGroup(); + + //MIRRORING + //only allow mirroring if both hands are opened for editing + EditorGUI.BeginDisabledGroup(showRightPreviewProperty.boolValue == false || showLeftPreviewProperty.boolValue == false); + + EditorGUILayout.Space(); + + if (GUILayout.Button("Import Pose")) + { + CopyPoseSelect(); + } + + EditorGUI.EndDisabledGroup(); + + + GUILayout.Space(32); + + + GUILayout.Label("Reference Pose:"); + EditorGUILayout.Space(); + forceToReferencePose = (EVRSkeletalReferencePose)EditorGUILayout.EnumPopup(forceToReferencePose); + GUI.color = new Color(1.0f, 0.73f, 0.7f); + bool forcePose = GUILayout.Button("RESET TO REFERENCE POSE"); + GUI.color = Color.white; + + if (forcePose) + { + bool confirm = EditorUtility.DisplayDialog("SteamVR", string.Format("This will overwrite your current skeleton data. (with data from the {0} reference pose)", forceToReferencePose.ToString()), "Overwrite", "Cancel"); + if (confirm) + { + if (forceToReferencePose == EVRSkeletalReferencePose.GripLimit) + { + // grip limit is controller-specific, the rest use a baked pose + if (showLeftPreviewProperty.boolValue) + leftSkeleton.ForceToReferencePose(forceToReferencePose); + if (showRightPreviewProperty.boolValue) + rightSkeleton.ForceToReferencePose(forceToReferencePose); + } + else + { + SteamVR_Skeleton_Pose poseResource = null; + if (forceToReferencePose == EVRSkeletalReferencePose.OpenHand) + poseResource = (SteamVR_Skeleton_Pose)Resources.Load("ReferencePose_OpenHand"); + if (forceToReferencePose == EVRSkeletalReferencePose.Fist) + poseResource = (SteamVR_Skeleton_Pose)Resources.Load("ReferencePose_Fist"); + if (forceToReferencePose == EVRSkeletalReferencePose.BindPose) + poseResource = (SteamVR_Skeleton_Pose)Resources.Load("ReferencePose_BindPose"); + + DeepCopyPose(poseResource, activePose); + } + } + } + + + } + + + void CopyPoseSelect() + { + string selected = EditorUtility.OpenFilePanel("Open Skeleton Pose ScriptableObject", Application.dataPath, "asset"); + selected = selected.Replace(Application.dataPath, "Assets"); + + if (selected == null) return; + + SteamVR_Skeleton_Pose newPose = (SteamVR_Skeleton_Pose)AssetDatabase.LoadAssetAtPath(selected, typeof(SteamVR_Skeleton_Pose)); + if (newPose == null) + { + EditorUtility.DisplayDialog("WARNING", "Asset could not be loaded. Is it not a SteamVR_Skeleton_Pose?", "ok"); + return; + } + DeepCopyPose(newPose, activePose); + } + + + void DeepCopyPose(SteamVR_Skeleton_Pose source, SteamVR_Skeleton_Pose dest) + { + int boneNum = SteamVR_Action_Skeleton.numBones; + + if (dest.rightHand.bonePositions == null) dest.rightHand.bonePositions = new Vector3[boneNum]; + if (dest.rightHand.boneRotations == null) dest.rightHand.boneRotations = new Quaternion[boneNum]; + + if (dest.leftHand.bonePositions == null) dest.leftHand.bonePositions = new Vector3[boneNum]; + if (dest.leftHand.boneRotations == null) dest.leftHand.boneRotations = new Quaternion[boneNum]; + + EditorUtility.SetDirty(dest); + + + // RIGHT HAND COPY + + dest.rightHand.position = source.rightHand.position; + dest.rightHand.rotation = source.rightHand.rotation; + for (int boneIndex = 0; boneIndex < boneNum; boneIndex++) + { + dest.rightHand.bonePositions[boneIndex] = source.rightHand.bonePositions[boneIndex]; + dest.rightHand.boneRotations[boneIndex] = source.rightHand.boneRotations[boneIndex]; + EditorUtility.DisplayProgressBar("Copying...", "Copying right hand pose", (float)boneIndex / (float)boneNum / 2f); + } + dest.rightHand.thumbFingerMovementType = source.rightHand.thumbFingerMovementType; + dest.rightHand.indexFingerMovementType = source.rightHand.indexFingerMovementType; + dest.rightHand.middleFingerMovementType = source.rightHand.middleFingerMovementType; + dest.rightHand.ringFingerMovementType = source.rightHand.ringFingerMovementType; + dest.rightHand.pinkyFingerMovementType = source.rightHand.pinkyFingerMovementType; + + // LEFT HAND COPY + + dest.leftHand.position = source.leftHand.position; + dest.leftHand.rotation = source.leftHand.rotation; + for (int boneIndex = 0; boneIndex < boneNum; boneIndex++) + { + dest.leftHand.bonePositions[boneIndex] = source.leftHand.bonePositions[boneIndex]; + dest.leftHand.boneRotations[boneIndex] = source.leftHand.boneRotations[boneIndex]; + EditorUtility.DisplayProgressBar("Copying...", "Copying left hand pose", (float)boneIndex / (float)boneNum / 2f); + } + dest.leftHand.thumbFingerMovementType = source.leftHand.thumbFingerMovementType; + dest.leftHand.indexFingerMovementType = source.leftHand.indexFingerMovementType; + dest.leftHand.middleFingerMovementType = source.leftHand.middleFingerMovementType; + dest.leftHand.ringFingerMovementType = source.leftHand.ringFingerMovementType; + dest.leftHand.pinkyFingerMovementType = source.leftHand.pinkyFingerMovementType; + + EditorUtility.SetDirty(dest); + + forceUpdateHands = true; + EditorUtility.ClearProgressBar(); + } + + int activePoseIndex = 0; + SerializedProperty activePoseProp; + SteamVR_Skeleton_Pose activePose; + + bool forceUpdateHands = false; + + public override void OnInspectorGUI() + { + + + serializedObject.Update(); + + DrawPoseEditorMenu(); + + DrawBlendingBehaviourMenu(); + + + serializedObject.ApplyModifiedProperties(); + } + + bool getRightFromOpposite = false; + bool getLeftFromOpposite = false; + + SteamVR_Behaviour_Skeleton leftSkeleton = null; + SteamVR_Behaviour_Skeleton rightSkeleton = null; + + void DrawPoseEditorMenu() + { + if (Application.isPlaying) + { + EditorGUILayout.LabelField("Cannot modify pose while in play mode."); + } + else + { + bool createNew = false; + + LoadDefaultPreviewHands(); + + + activePoseIndex = previewPoseSelection.intValue; + if (activePoseIndex == 0) + activePoseProp = skeletonMainPoseProperty; + else + activePoseProp = skeletonAdditionalPosesProperty.GetArrayElementAtIndex(activePoseIndex - 1); + + + //box containing all pose editing controls + GUILayout.BeginVertical("box"); + + + poseEditorExpanded.boolValue = IndentedFoldoutHeader(poseEditorExpanded.boolValue, "Pose Editor"); + + + if (poseEditorExpanded.boolValue) + { + //show selectable menu of all poses, highlighting the one that is selected + EditorGUILayout.Space(); + + + poser.poseNames = new string[skeletonAdditionalPosesProperty.arraySize + 1]; + + for (int i = 0; i < skeletonAdditionalPosesProperty.arraySize + 1; i++) + { + if (i == 0) + // main pose special case + poser.poseNames[i] = skeletonMainPoseProperty.objectReferenceValue == null ? "[not set]" : skeletonMainPoseProperty.objectReferenceValue.name + " (MAIN)"; + else + // additional poses from array + poser.poseNames[i] = skeletonAdditionalPosesProperty.GetArrayElementAtIndex(i - 1).objectReferenceValue == null ? "[not set]" : skeletonAdditionalPosesProperty.GetArrayElementAtIndex(i - 1).objectReferenceValue.name; + } + + EditorGUILayout.BeginHorizontal(); + int poseSelected = GUILayout.Toolbar(activePoseIndex, poser.poseNames); + + if (poseSelected != activePoseIndex) + { + forceUpdateHands = true; + activePoseIndex = poseSelected; + PoseChanged = true; + previewPoseSelection.intValue = activePoseIndex; + serializedObject.ApplyModifiedProperties(); + } + + + + + EditorGUILayout.BeginVertical(GUILayout.MaxWidth(32)); + if (GUILayout.Button("+", GUILayout.MaxWidth(32))) + { + skeletonAdditionalPosesProperty.InsertArrayElementAtIndex(skeletonAdditionalPosesProperty.arraySize); + } + //only allow deletion of additional poses + EditorGUI.BeginDisabledGroup(skeletonAdditionalPosesProperty.arraySize == 0 || activePoseIndex == 0); + if (GUILayout.Button("-", GUILayout.MaxWidth(32)) && skeletonAdditionalPosesProperty.arraySize > 0) + { + skeletonAdditionalPosesProperty.DeleteArrayElementAtIndex(activePoseIndex - 1); + skeletonAdditionalPosesProperty.DeleteArrayElementAtIndex(activePoseIndex - 1); + if (activePoseIndex >= skeletonAdditionalPosesProperty.arraySize + 1) + { + activePoseIndex = skeletonAdditionalPosesProperty.arraySize; + previewPoseSelection.intValue = activePoseIndex; + return; + } + } + + EditorGUI.EndDisabledGroup(); + EditorGUILayout.EndVertical(); + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndHorizontal(); + + GUILayout.BeginVertical("box"); + + // sides of pose editor + GUILayout.BeginHorizontal(); + + //pose controls + GUILayout.BeginVertical(GUILayout.MaxWidth(200)); + + GUILayout.Label("Current Pose:"); + + if (PoseChanged) + { + PoseChanged = false; + forceUpdateHands = true; + + if (activePoseIndex == 0) + activePoseProp = skeletonMainPoseProperty; + else + activePoseProp = skeletonAdditionalPosesProperty.GetArrayElementAtIndex(activePoseIndex - 1); + activePose = (SteamVR_Skeleton_Pose)activePoseProp.objectReferenceValue; + + } + + + activePose = (SteamVR_Skeleton_Pose)activePoseProp.objectReferenceValue; + if (activePoseProp.objectReferenceValue == null) + { + if (previewLeftInstanceProperty.objectReferenceValue != null) + DestroyImmediate(previewLeftInstanceProperty.objectReferenceValue); + if (previewRightInstanceProperty.objectReferenceValue != null) + DestroyImmediate(previewRightInstanceProperty.objectReferenceValue); + + EditorGUILayout.BeginHorizontal(); + activePoseProp.objectReferenceValue = EditorGUILayout.ObjectField(activePoseProp.objectReferenceValue, typeof(SteamVR_Skeleton_Pose), false); + if (GUILayout.Button("Create")) createNew = true; + EditorGUILayout.EndHorizontal(); + if (createNew) + { + string fullPath = EditorUtility.SaveFilePanelInProject("Create New Skeleton Pose", "newPose", "asset", "Save file"); + + if (string.IsNullOrEmpty(fullPath) == false) + { + SteamVR_Skeleton_Pose newPose = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(newPose, fullPath); + AssetDatabase.SaveAssets(); + + activePoseProp.objectReferenceValue = newPose; + serializedObject.ApplyModifiedProperties(); + } + } + } + else + { + activePoseProp.objectReferenceValue = EditorGUILayout.ObjectField(activePoseProp.objectReferenceValue, typeof(SteamVR_Skeleton_Pose), false); + + DrawPoseControlButtons(); + + UpdatePreviewHand(previewLeftInstanceProperty, showLeftPreviewProperty, SteamVR_Settings.instance.previewHandLeft, activePose.leftHand, activePose, forceUpdateHands); + UpdatePreviewHand(previewRightInstanceProperty, showRightPreviewProperty, SteamVR_Settings.instance.previewHandRight, activePose.rightHand, activePose, forceUpdateHands); + + forceUpdateHands = false; + + GUILayout.EndVertical(); + + + + + GUILayout.Space(10); + + if (handTexL == null) + handTexL = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/HandLeftIcon.png"); + if (handTexR == null) + handTexR = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/HandRightIcon.png"); + + + //Left Hand + + GUILayout.Space(32); + EditorGUILayout.BeginVertical(); + EditorGUILayout.BeginVertical("box"); + EditorGUILayout.BeginHorizontal(); + GUI.color = new Color(1, 1, 1, showLeftPreviewProperty.boolValue ? 1 : 0.25f); + if (GUILayout.Button(handTexL, GUI.skin.label, GUILayout.Width(64), GUILayout.Height(64))) + { + showLeftPreviewProperty.boolValue = !showLeftPreviewProperty.boolValue; + //forceUpdateHands = true; + } + GUI.color = Color.white; + + EditorGUIUtility.labelWidth = 48; + EditorGUILayout.LabelField("Left Hand", EditorStyles.boldLabel); + EditorGUIUtility.labelWidth = 0; + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + bool showLeft = showLeftPreviewProperty.boolValue; + + + DrawHand(showLeft, activePose.leftHand, activePose.rightHand, getLeftFromOpposite, showLeftPreviewProperty); + EditorGUILayout.EndVertical(); + EditorGUI.BeginDisabledGroup((showLeftPreviewProperty.boolValue && showRightPreviewProperty.boolValue) == false); + getRightFromOpposite = GUILayout.Button("Copy Left pose to Right hand"); + EditorGUI.EndDisabledGroup(); + EditorGUILayout.EndVertical(); + + + + EditorGUILayout.BeginVertical(); + EditorGUILayout.BeginVertical("box"); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + EditorGUIUtility.labelWidth = 48; + EditorGUILayout.LabelField("Right Hand", EditorStyles.boldLabel); + EditorGUIUtility.labelWidth = 0; + GUI.color = new Color(1, 1, 1, showRightPreviewProperty.boolValue ? 1 : 0.25f); + if (GUILayout.Button(handTexR, GUI.skin.label, GUILayout.Width(64), GUILayout.Height(64))) + { + showRightPreviewProperty.boolValue = !showRightPreviewProperty.boolValue; + //forceUpdateHands = true; + } + GUI.color = Color.white; + EditorGUILayout.EndHorizontal(); + + bool showRight = showLeftPreviewProperty.boolValue; + + DrawHand(showRight, activePose.rightHand, activePose.leftHand, getRightFromOpposite, showRightPreviewProperty); + EditorGUILayout.EndVertical(); + EditorGUI.BeginDisabledGroup((showLeftPreviewProperty.boolValue && showRightPreviewProperty.boolValue) == false); + getLeftFromOpposite = GUILayout.Button("Copy Right pose to Left hand"); + EditorGUI.EndDisabledGroup(); + + } + + + + + + + + /* + + + + + if (activePoseProp.objectReferenceValue == null) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(activePoseProp); + createNew = GUILayout.Button("Create"); + EditorGUILayout.EndHorizontal(); + } + else + { + EditorGUILayout.PropertyField(activePoseProp); + + DrawDivider(); + + + DrawSaveButtons(); + + if (PoseChanged) + { + PoseChanged = false; + forceUpdateHands = true; + } + + UpdatePreviewHand(previewLeftInstanceProperty, showLeftPreviewProperty, previewLeftHandPrefab, activePose.leftHand, forceUpdateHands); + UpdatePreviewHand(previewRightInstanceProperty, showRightPreviewProperty, previewRightHandPrefab, activePose.rightHand, forceUpdateHands); + + } + + activePoseProp.objectReferenceValue = newPose; + serializedObject.ApplyModifiedProperties(); + } + } + */ + GUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + GUILayout.EndHorizontal(); + + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.BeginHorizontal(); + EditorGUIUtility.labelWidth = 120; + poserScale.floatValue = EditorGUILayout.FloatField("Preview Pose Scale", poserScale.floatValue); + if (poserScale.floatValue <= 0) poserScale.floatValue = 1; + EditorGUIUtility.labelWidth = 0; + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + if (EditorGUI.EndChangeCheck()) + { + forceUpdateHands = true; + } + } + + GUILayout.EndVertical(); + } + } + + + bool SelectablePoseButton(string name, bool selected) + { + if (selected) + { + GUI.color = new Color(0.7f, 0.73f, 0.8f); + GUILayout.Button(name, GUILayout.ExpandWidth(false)); + GUI.color = Color.white; + + return false; + } + else + { + return GUILayout.Button(name, GUILayout.ExpandWidth(false)); + } + } + + Texture[] handMaskTextures; + + void DrawBlendingBehaviourMenu() + { + if (handMaskTextures == null) + { + handMaskTextures = new Texture[] { (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Palm.png"), + (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Thumb.png"), + (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Index.png"), + (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Middle.png"), + (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Ring.png"), + (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask_Pinky.png") + }; + } + + GUILayout.Space(10); + GUILayout.BeginVertical("box"); + + blendEditorExpanded.boolValue = IndentedFoldoutHeader(blendEditorExpanded.boolValue, "Blending Editor"); + + if (blendEditorExpanded.boolValue) + { + //show selectable menu of all poses, highlighting the one that is selected + EditorGUILayout.Space(); + for (int i = 0; i < blendingBehaviourArray.arraySize; i++) + { + + SerializedProperty blender = blendingBehaviourArray.GetArrayElementAtIndex(i); + SerializedProperty blenderName = blender.FindPropertyRelative("name"); + SerializedProperty blenderEnabled = blender.FindPropertyRelative("enabled"); + SerializedProperty blenderInfluence = blender.FindPropertyRelative("influence"); + SerializedProperty blenderPose = blender.FindPropertyRelative("pose"); + SerializedProperty blenderType = blender.FindPropertyRelative("type"); + SerializedProperty blenderUseMask = blender.FindPropertyRelative("useMask"); + SerializedProperty blenderValue = blender.FindPropertyRelative("value"); + SerializedProperty blenderMask = blender.FindPropertyRelative("mask").FindPropertyRelative("values"); + + SerializedProperty blenderPreview = blender.FindPropertyRelative("previewEnabled"); + + GUILayout.Space(10); + float bright = blenderEnabled.boolValue ? 0.6f : 0.9f; // grey out box when disabled + if (EditorGUIUtility.isProSkin) bright = 1; + GUI.color = new Color(bright, bright, bright); + GUILayout.BeginVertical("box"); + GUI.color = Color.white; + + blenderPreview.boolValue = IndentedFoldoutHeader(blenderPreview.boolValue, blenderName.stringValue, 1); + + //SerializedProperty blenderValue = blender.FindProperty("value"); + + EditorGUIUtility.labelWidth = 64; + + EditorGUILayout.BeginHorizontal(); + DrawBlenderLogo(blenderType); + EditorGUILayout.PropertyField(blenderEnabled); + GUILayout.FlexibleSpace(); + + EditorGUI.BeginDisabledGroup(i == 0); + if (GUILayout.Button("Move Up")) + { + blendingBehaviourArray.MoveArrayElement(i, i - 1); + } + EditorGUI.EndDisabledGroup(); + + EditorGUI.BeginDisabledGroup(i == blendingBehaviourArray.arraySize - 1); + if (GUILayout.Button("Move Down")) + { + blendingBehaviourArray.MoveArrayElement(i, i + 1); + } + EditorGUI.EndDisabledGroup(); + + GUILayout.Space(6); + GUI.color = new Color(0.9f, 0.8f, 0.78f); + if (GUILayout.Button("Delete")) + { + if (EditorUtility.DisplayDialog("", "Do you really want to delete this Blend Behaviour?", "Yes", "Cancel")) + { + blendingBehaviourArray.DeleteArrayElementAtIndex(i); + return; + } + } + GUI.color = Color.white; + EditorGUILayout.EndHorizontal(); + + if (blenderPreview.boolValue) + { + + EditorGUILayout.PropertyField(blenderName); + + + + EditorGUILayout.BeginHorizontal(); + + + //EditorGUILayout.BeginVertical(); + + + EditorGUILayout.BeginVertical(); + + EditorGUILayout.Slider(blenderInfluence, 0, 1); + + blenderPose.intValue = EditorGUILayout.Popup("Pose", blenderPose.intValue, poser.poseNames); + + GUILayout.Space(20); + + EditorGUILayout.PropertyField(blenderType); + + if (Application.isPlaying) + { + GUILayout.Space(10); + GUI.color = new Color(0, 0, 0, 0.3f); + EditorGUILayout.LabelField("", GUI.skin.box, GUILayout.Height(20), GUILayout.ExpandWidth(true)); + GUI.color = Color.white; + Rect fillRect = GUILayoutUtility.GetLastRect(); + EditorGUI.DrawRect(fillRectHorizontal(fillRect, blenderValue.floatValue), Color.green); + } + + EditorGUILayout.EndVertical(); + + + + EditorGUILayout.BeginVertical(GUILayout.MaxWidth(100)); + EditorGUILayout.PropertyField(blenderUseMask); + if (blenderUseMask.boolValue) + { + DrawMaskEnabled(blenderMask); + } + else + { + DrawMaskDisabled(blenderMask); + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndHorizontal(); + + + + DrawDivider(); + + EditorGUIUtility.labelWidth = 0; + + + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.Manual) + { + EditorGUILayout.Slider(blenderValue, 0, 1); + } + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.AnalogAction) + { + SerializedProperty blenderAction = blender.FindPropertyRelative("action_single"); + SerializedProperty blenderSmooth = blender.FindPropertyRelative("smoothingSpeed"); + EditorGUILayout.PropertyField(blenderAction); + EditorGUILayout.PropertyField(blenderSmooth); + } + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.BooleanAction) + { + SerializedProperty blenderAction = blender.FindPropertyRelative("action_bool"); + SerializedProperty blenderSmooth = blender.FindPropertyRelative("smoothingSpeed"); + EditorGUILayout.PropertyField(blenderAction); + EditorGUILayout.PropertyField(blenderSmooth); + } + } + + GUILayout.EndVertical(); + + } + + + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("+", GUILayout.MaxWidth(32))) + { + int i = blendingBehaviourArray.arraySize; + blendingBehaviourArray.InsertArrayElementAtIndex(i); + blendingBehaviourArray.GetArrayElementAtIndex(i).FindPropertyRelative("name").stringValue = "New Behaviour"; + blendingBehaviourArray.GetArrayElementAtIndex(i).FindPropertyRelative("enabled").boolValue = true; + blendingBehaviourArray.GetArrayElementAtIndex(i).FindPropertyRelative("influence").floatValue = 1; + blendingBehaviourArray.GetArrayElementAtIndex(i).FindPropertyRelative("previewEnabled").boolValue = true; + serializedObject.ApplyModifiedProperties(); + poser.blendingBehaviours[i].mask.Reset(); + } + GUILayout.FlexibleSpace(); + + EditorGUILayout.EndHorizontal(); + + } + GUILayout.EndVertical(); + + } + + Rect fillRectHorizontal(Rect r, float f) + { + r.xMax--; + r.yMax--; + r.xMin++; + r.yMin++; + r.width *= f; + return r; + } + + void DrawBlenderLogo(SerializedProperty blenderType) + { + Texture icon = null; + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.Manual) + { + icon = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Manual_Icon.png"); + } + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.AnalogAction) + { + icon = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Analog_Icon.png"); + } + if (blenderType.intValue == (int)SteamVR_Skeleton_Poser.PoseBlendingBehaviour.BlenderTypes.BooleanAction) + { + icon = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/BlenderBehaviour_Boolean_Icon.png"); + } + + GUILayout.Label(icon, GUILayout.MaxHeight(32), GUILayout.MaxWidth(32)); + } + + Color maskColorEnabled = new Color(0.3f, 1.0f, 0.3f, 1.0f); + Color maskColorDisabled = new Color(0, 0, 0, 0.5f); + Color maskColorUnused = new Color(0.3f, 0.7f, 0.3f, 0.3f); + + void DrawMaskDisabled(SerializedProperty mask) + { + Texture m = (Texture)EditorGUIUtility.Load("Assets/SteamVR/Input/Editor/Resources/Icons/handmask.png"); + GUI.color = maskColorUnused; + GUILayout.Label(m, GUILayout.MaxHeight(100), GUILayout.MaxWidth(100)); + GUI.color = Color.white; + } + + void DrawMaskEnabled(SerializedProperty mask) + { + GUILayout.Label("", GUILayout.Height(100), GUILayout.Width(100)); + Rect maskRect = GUILayoutUtility.GetLastRect(); + for (int i = 0; i < 6; i++) + { + GUI.color = mask.GetArrayElementAtIndex(i).boolValue ? maskColorEnabled : maskColorDisabled; + GUI.Label(maskRect, handMaskTextures[i]); + GUI.color = new Color(0, 0, 0, 0.0f); + if (GUI.Button(GetFingerAreaRect(maskRect, i), "")) + { + mask.GetArrayElementAtIndex(i).boolValue = !mask.GetArrayElementAtIndex(i).boolValue; + } + GUI.color = Color.white; + //maskVal + } + } + + /// + /// Defines area of mask icon to be buttons for each finger + /// + Rect GetFingerAreaRect(Rect source, int i) + { + Rect outRect = source; + if (i == 0) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.4f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.8f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 1.0f); // bottom edge + } + if (i == 1) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.0f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.4f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 1.0f); // bottom edge + } + if (i == 2) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.3f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.425f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.0f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // bottom edge + } + if (i == 3) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.425f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.55f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.0f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // bottom edge + } + if (i == 4) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.55f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.675f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.0f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // bottom edge + } + if (i == 5) + { + outRect.xMin = Mathf.Lerp(source.xMin, source.xMax, 0.675f); // left edge + outRect.xMax = Mathf.Lerp(source.xMin, source.xMax, 0.8f); // right edge + + outRect.yMin = Mathf.Lerp(source.yMin, source.yMax, 0.0f); // top edge + outRect.yMax = Mathf.Lerp(source.yMin, source.yMax, 0.5f); // bottom edge + } + return outRect; + } + + + + void DrawDivider() + { + GUI.color = new Color(0, 0, 0, 0.6f); + EditorGUILayout.Space(); + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + EditorGUILayout.Space(); + GUI.color = Color.white; + } + + bool IndentedFoldoutHeader(bool fold, string text, int indent = 1) + { + GUILayout.BeginHorizontal(); + GUIStyle boldFoldoutStyle = new GUIStyle(EditorStyles.foldout); + boldFoldoutStyle.fontStyle = FontStyle.Bold; + GUILayout.Space(14f * indent); + fold = EditorGUILayout.Foldout(fold, text, boldFoldoutStyle); + GUILayout.EndHorizontal(); + return fold; + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs.meta new file mode 100644 index 00000000..993d70b3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Editor/SteamVR_Skeleton_PoserEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4dc9de3af3d42194abc1380cc3a5cc61 +timeCreated: 1542680608 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON.meta new file mode 100644 index 00000000..62413224 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0142ddd0457153743ba87f4fdd6bfaa7 +folderAsset: yes +timeCreated: 1528225471 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json new file mode 100644 index 00000000..1cf51b5a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json @@ -0,0 +1,171 @@ +{ + "actions": [ + { + "name": "/actions/default/in/InteractUI", + "type": "boolean" + }, + { + "name": "/actions/default/in/Teleport", + "type": "boolean" + }, + { + "name": "/actions/default/in/GrabPinch", + "type": "boolean" + }, + { + "name": "/actions/default/in/GrabGrip", + "type": "boolean" + }, + { + "name": "/actions/default/in/Pose", + "type": "pose" + }, + { + "name": "/actions/default/in/SkeletonLeftHand", + "type": "skeleton", + "skeleton": "/skeleton/hand/left" + }, + { + "name": "/actions/default/in/SkeletonRightHand", + "type": "skeleton", + "skeleton": "/skeleton/hand/right" + }, + { + "name": "/actions/default/in/Squeeze", + "type": "vector1", + "requirement": "optional" + }, + { + "name": "/actions/default/in/HeadsetOnHead", + "type": "boolean", + "requirement": "optional" + }, + { + "name": "/actions/default/in/SnapTurnLeft", + "type": "boolean", + "requirement": "suggested" + }, + { + "name": "/actions/default/in/SnapTurnRight", + "type": "boolean" + }, + { + "name": "/actions/default/out/Haptic", + "type": "vibration" + }, + { + "name": "/actions/platformer/in/Move", + "type": "vector2" + }, + { + "name": "/actions/platformer/in/Jump", + "type": "boolean" + }, + { + "name": "/actions/buggy/in/Steering", + "type": "vector2" + }, + { + "name": "/actions/buggy/in/Throttle", + "type": "vector1" + }, + { + "name": "/actions/buggy/in/Brake", + "type": "boolean" + }, + { + "name": "/actions/buggy/in/Reset", + "type": "boolean" + }, + { + "name": "/actions/mixedreality/in/ExternalCamera", + "type": "pose", + "requirement": "optional" + } + ], + "action_sets": [ + { + "name": "/actions/default", + "usage": "single" + }, + { + "name": "/actions/platformer", + "usage": "single" + }, + { + "name": "/actions/buggy", + "usage": "single" + }, + { + "name": "/actions/mixedreality", + "usage": "single" + } + ], + "default_bindings": [ + { + "controller_type": "vive_controller", + "binding_url": "bindings_vive_controller.json" + }, + { + "controller_type": "oculus_touch", + "binding_url": "bindings_oculus_touch.json" + }, + { + "controller_type": "knuckles", + "binding_url": "bindings_knuckles.json" + }, + { + "controller_type": "holographic_controller", + "binding_url": "bindings_holographic_controller.json" + }, + { + "controller_type": "vive_cosmos_controller", + "binding_url": "bindings_vive_cosmos_controller.json" + }, + { + "controller_type": "vive_cosmos", + "binding_url": "binding_vive_cosmos.json" + }, + { + "controller_type": "vive", + "binding_url": "binding_vive.json" + }, + { + "controller_type": "indexhmd", + "binding_url": "binding_index_hmd.json" + }, + { + "controller_type": "vive_pro", + "binding_url": "binding_vive_pro.json" + }, + { + "controller_type": "rift", + "binding_url": "binding_rift.json" + }, + { + "controller_type": "holographic_hmd", + "binding_url": "binding_holographic_hmd.json" + }, + { + "controller_type": "vive_tracker_camera", + "binding_url": "binding_vive_tracker_camera.json" + } + ], + "localization": [ + { + "language_tag": "en_US", + "/actions/default/in/GrabGrip": "Grab Grip", + "/actions/default/in/GrabPinch": "Grab Pinch", + "/actions/default/in/HeadsetOnHead": "Headset on head (proximity sensor)", + "/actions/default/in/InteractUI": "Interact With UI", + "/actions/default/in/Pose": "Pose", + "/actions/default/in/SkeletonLeftHand": "Skeleton (Left)", + "/actions/default/in/SkeletonRightHand": "Skeleton (Right)", + "/actions/default/in/Teleport": "Teleport", + "/actions/default/out/Haptic": "Haptic", + "/actions/platformer/in/Jump": "Jump", + "/actions/default/in/SnapTurnLeft": "Snap Turn (Left)", + "/actions/default/in/SnapTurnRight": "Snap Turn (Right)" + } + ] +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json.meta new file mode 100644 index 00000000..221f103a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/actions.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39438ffe60abace49bb41a4ae9c732b8 +timeCreated: 1568830083 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json new file mode 100644 index 00000000..866c3808 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json @@ -0,0 +1,27 @@ +{ + "alias_info" : {}, + "bindings" : { + "/actions/default" : { + "chords" : [], + "haptics" : [], + "poses" : [], + "skeleton" : [], + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/default/in/headsetonhead" + } + }, + "mode" : "button", + "path" : "/user/head/proximity" + } + ] + } + }, + "controller_type" : "holographic_hmd", + "description" : "", + "name" : "holographic_hmd defaults", + "options" : {}, + "simulated_actions" : [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json.meta new file mode 100644 index 00000000..d34303aa --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_holographic_hmd.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bf9d7fa6f3987e4e9b1a610c756e32b +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json new file mode 100644 index 00000000..24b53e21 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json @@ -0,0 +1,27 @@ +{ + "alias_info": {}, + "bindings": { + "/actions/default": { + "chords": [], + "haptics": [], + "poses": [], + "skeleton": [], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/headsetonhead" + } + }, + "mode": "button", + "path": "/user/head/proximity" + } + ] + } + }, + "controller_type": "indexhmd", + "description": "", + "name": "index hmd defaults", + "options": {}, + "simulated_actions": [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json.meta new file mode 100644 index 00000000..90284b93 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_index_hmd.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fab760ff58ade2e45a3ae64ba79b0798 +timeCreated: 1568830083 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json new file mode 100644 index 00000000..4a7bb542 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json @@ -0,0 +1,27 @@ +{ + "alias_info" : {}, + "bindings" : { + "/actions/default" : { + "chords" : [], + "haptics" : [], + "poses" : [], + "skeleton" : [], + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/default/in/headsetonhead" + } + }, + "mode" : "button", + "path" : "/user/head/proximity" + } + ] + } + }, + "controller_type" : "rift", + "description" : "", + "name" : "rift defaults", + "options" : {}, + "simulated_actions" : [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json.meta new file mode 100644 index 00000000..b3414bbc --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_rift.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06c05f6a7ccba724faf1abf742ab9013 +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json new file mode 100644 index 00000000..a4ad3429 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json @@ -0,0 +1,27 @@ +{ + "alias_info" : {}, + "bindings" : { + "/actions/default" : { + "chords" : [], + "haptics" : [], + "poses" : [], + "skeleton" : [], + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/default/in/headsetonhead" + } + }, + "mode" : "button", + "path" : "/user/head/proximity" + } + ] + } + }, + "controller_type" : "vive", + "description" : "", + "name" : "vive defaults", + "options" : {}, + "simulated_actions" : [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json.meta new file mode 100644 index 00000000..92cb2f63 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43fad7e4e7f44884ba9067602d2a8b5d +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json new file mode 100644 index 00000000..36b618f5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json @@ -0,0 +1,27 @@ +{ + "alias_info": {}, + "bindings": { + "/actions/default": { + "chords": [], + "haptics": [], + "poses": [], + "skeleton": [], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/headsetonhead" + } + }, + "mode": "button", + "path": "/user/head/proximity" + } + ] + } + }, + "controller_type": "vive_cosmos", + "description": "", + "name": "vive cosmos hmd defaults", + "options": {}, + "simulated_actions": [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json.meta new file mode 100644 index 00000000..700ee5d7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_cosmos.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da08bf5ecfe08d54abffcb6b22e75322 +timeCreated: 1568830083 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json new file mode 100644 index 00000000..43ba0d33 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json @@ -0,0 +1,27 @@ +{ + "alias_info" : {}, + "bindings" : { + "/actions/default" : { + "chords" : [], + "haptics" : [], + "poses" : [], + "skeleton" : [], + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/default/in/headsetonhead" + } + }, + "mode" : "button", + "path" : "/user/head/proximity" + } + ] + } + }, + "controller_type" : "vive_pro", + "description" : "", + "name" : "vive_pro defaults", + "options" : {}, + "simulated_actions" : [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json.meta new file mode 100644 index 00000000..1d1b186f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_pro.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70b9b61068027ed44ba03cd382badfe6 +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json new file mode 100644 index 00000000..75e401e8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json @@ -0,0 +1,22 @@ +{ + "alias_info" : {}, + "bindings": { + "/actions/mixedreality": { + "haptics": [ + ], + "poses": [ + { + "output": "/actions/mixedreality/in/ExternalCamera", + "path": "/user/camera/pose/raw" + } + ], + "sources": [ + ] + } + }, + "controller_type" : "vive_tracker_camera", + "description" : "", + "name" : "tracker_forcamera", + "options" : {}, + "simulated_actions" : [] +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json.meta new file mode 100644 index 00000000..bf2a2832 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/binding_vive_tracker_camera.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 119e4a9328cca524ba289f8978bac7cc +timeCreated: 1545954566 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json new file mode 100644 index 00000000..3b822a4b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json @@ -0,0 +1,307 @@ +{ + "bindings" : { + "/actions/buggy" : { + "sources" : [ + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trackpad" + } + ] + }, + "/actions/default" : { + "haptics" : [ + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/left/output/haptic" + }, + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/right/output/haptic" + } + ], + "poses" : [ + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/right/pose/raw" + } + ], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.95", + "click_deactivate_threshold": "0.9" + }, + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.95", + "click_deactivate_threshold": "0.9" + }, + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trackpad" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trackpad" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + } + ] + }, + "/actions/platformer" : { + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + } + ] + } + }, + "controller_type" : "holographic_controller", + "description" : "", + "name" : "Default bindings for Windows Mixed Reality Controllers" +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json.meta new file mode 100644 index 00000000..c9453036 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_holographic_controller.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90a42dface447e34e9ba2049ee99bdf5 +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json new file mode 100644 index 00000000..8a4e53a6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json @@ -0,0 +1,326 @@ +{ + "bindings" : { + "/actions/buggy" : { + "sources" : [ + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/thumbstick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/thumbstick" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/a" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/a" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/b" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/b" + } + ] + }, + "/actions/default" : { + "chords" : [], + "haptics" : [ + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/left/output/haptic" + }, + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/right/output/haptic" + } + ], + "poses" : [ + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/right/pose/raw" + } + ], + "skeleton" : [ + { + "output" : "/actions/default/in/skeletonlefthand", + "path" : "/user/hand/left/input/skeleton/left" + }, + { + "output" : "/actions/default/in/skeletonrighthand", + "path" : "/user/hand/right/input/skeleton/right" + } + ], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "force": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "force_sensor", + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "force": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "force_sensor", + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trackpad" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trackpad" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/thumbstick" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/thumbstick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/thumbstick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/thumbstick" + }, + { + "inputs": { + "grab": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "grab", + "parameters": { + "force_hold_threshold": "0.02", + "force_release_threshold": "0.01" + }, + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "grab": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "grab", + "parameters": { + "force_hold_threshold": "0.02", + "force_release_threshold": "0.01" + }, + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "grab": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "grab", + "parameters": { + "force_hold_threshold": "0.02", + "force_release_threshold": "0.01" + }, + "path": "/user/hand/left/input/pinch" + }, + { + "inputs": { + "grab": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "grab", + "parameters": { + "force_hold_threshold": "0.02", + "force_release_threshold": "0.01" + }, + "path": "/user/hand/right/input/pinch" + } + ] + }, + "/actions/platformer" : { + "sources" : [ + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/thumbstick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/thumbstick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trigger" + } + ] + } + }, + "controller_type" : "knuckles", + "description" : "", + "name" : "knuckles_default" +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json.meta new file mode 100644 index 00000000..2ae0586a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_knuckles.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2fc83bd02dd477f46bab78fdfd4c3193 +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json new file mode 100644 index 00000000..7850056a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json @@ -0,0 +1,315 @@ +{ + "bindings" : { + "/actions/buggy" : { + "sources" : [ + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/x" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/x" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/y" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/y" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/a" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/b" + } + ] + }, + "/actions/default" : { + "chords" : [], + "haptics" : [ + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/left/output/haptic" + }, + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/right/output/haptic" + } + ], + "poses" : [ + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/right/pose/raw" + } + ], + "skeleton" : [ + { + "output" : "/actions/default/in/skeletonlefthand", + "path" : "/user/hand/left/input/skeleton/left" + }, + { + "output" : "/actions/default/in/skeletonrighthand", + "path" : "/user/hand/right/input/skeleton/right" + } + ], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7" + }, + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7", + "force_input": "value" + }, + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7" + }, + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7" + }, + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/right/input/grip" + } + ] + }, + "/actions/platformer" : { + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + }, + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + }, + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + } + ] + } + }, + "controller_type" : "oculus_touch", + "description" : "", + "name" : "oculus_touch" +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json.meta new file mode 100644 index 00000000..ed4f478e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_oculus_touch.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac8ef0844edb47f47a2a8edc62df4eab +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json new file mode 100644 index 00000000..4732d006 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json @@ -0,0 +1,289 @@ +{ + "bindings" : { + "/actions/buggy" : { + "sources" : [ + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + }, + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "trackpad", + "path" : "/user/hand/left/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + }, + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "trackpad", + "path" : "/user/hand/right/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/application_menu" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/application_menu" + } + ] + }, + "/actions/default" : { + "chords" : [], + "haptics" : [ + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/left/output/haptic" + }, + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/right/output/haptic" + } + ], + "poses" : [ + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/right/pose/raw" + } + ], + "skeleton" : [ + { + "output" : "/actions/default/in/skeletonlefthand", + "path" : "/user/hand/left/input/skeleton/left" + }, + { + "output" : "/actions/default/in/skeletonrighthand", + "path" : "/user/hand/right/input/skeleton/right" + } + ], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.05", + "click_deactivate_threshold": "0", + "force_input": "force" + }, + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.75", + "click_deactivate_threshold": "0.7", + "force_input": "value" + }, + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.75", + "click_deactivate_threshold": "0.7" + }, + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "center": { + "output": "/actions/default/in/teleport" + }, + "east": { + "output": "/actions/default/in/snapturnright" + }, + "north": { + "output": "/actions/default/in/teleport" + }, + "south": { + "output": "/actions/default/in/teleport" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "90", + "overlap_pct": "15", + "sub_mode": "click" + }, + "path": "/user/hand/left/input/trackpad" + }, + { + "inputs": { + "center": { + "output": "/actions/default/in/teleport" + }, + "east": { + "output": "/actions/default/in/snapturnright" + }, + "north": { + "output": "/actions/default/in/teleport" + }, + "south": { + "output": "/actions/default/in/teleport" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "90", + "overlap_pct": "15", + "sub_mode": "click" + }, + "path": "/user/hand/right/input/trackpad" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.05", + "click_deactivate_threshold": "0", + "force_input": "force" + }, + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/right/input/trigger" + } + ] + }, + "/actions/platformer" : { + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/trackpad" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/trackpad" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "trackpad", + "path" : "/user/hand/left/input/trackpad" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "trackpad", + "path" : "/user/hand/right/input/trackpad" + } + ] + } + }, + "controller_type" : "vive_controller", + "description" : "", + "name" : "vive_controller" +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json.meta new file mode 100644 index 00000000..2856ac5d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_controller.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80888c8fe60f72c41bd99822a92c9232 +timeCreated: 1541544002 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json new file mode 100644 index 00000000..2b2193ae --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json @@ -0,0 +1,289 @@ +{ + "bindings" : { + "/actions/buggy" : { + "sources" : [ + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/left/input/trigger" + }, + { + "inputs" : { + "pull" : { + "output" : "/actions/buggy/in/throttle" + } + }, + "mode" : "trigger", + "path" : "/user/hand/right/input/trigger" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "position" : { + "output" : "/actions/buggy/in/steering" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/x" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/left/input/y" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/brake" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/a" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/buggy/in/reset" + } + }, + "mode" : "button", + "path" : "/user/hand/right/input/b" + } + ] + }, + "/actions/default" : { + "chords" : [], + "haptics" : [ + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/left/output/haptic" + }, + { + "output" : "/actions/default/out/haptic", + "path" : "/user/hand/right/output/haptic" + } + ], + "poses" : [ + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/left/pose/raw" + }, + { + "output" : "/actions/default/in/pose", + "path" : "/user/hand/right/pose/raw" + } + ], + "skeleton" : [ + { + "output" : "/actions/default/in/skeletonlefthand", + "path" : "/user/hand/left/input/skeleton/left" + }, + { + "output" : "/actions/default/in/skeletonrighthand", + "path" : "/user/hand/right/input/skeleton/right" + } + ], + "sources": [ + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "path": "/user/hand/left/input/grip" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7", + "force_input": "value" + }, + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/interactui" + } + }, + "mode": "button", + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabpinch" + } + }, + "mode": "button", + "parameters": { + "click_activate_threshold": "0.8", + "click_deactivate_threshold": "0.7" + }, + "path": "/user/hand/right/input/trigger" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "north": { + "output": "/actions/default/in/teleport" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "25", + "overlap_pct": "30", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/left/input/joystick" + }, + { + "inputs": { + "east": { + "output": "/actions/default/in/snapturnright" + }, + "west": { + "output": "/actions/default/in/snapturnleft" + } + }, + "mode": "dpad", + "parameters": { + "deadzone_pct": "85", + "overlap_pct": "0", + "sub_mode": "touch" + }, + "path": "/user/hand/right/input/joystick" + }, + { + "inputs": { + "click": { + "output": "/actions/default/in/grabgrip" + } + }, + "mode": "button", + "path": "/user/hand/right/input/grip" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/left/input/trigger" + }, + { + "inputs": { + "pull": { + "output": "/actions/default/in/squeeze" + } + }, + "mode": "trigger", + "path": "/user/hand/right/input/trigger" + } + ] + }, + "/actions/platformer" : { + "sources" : [ + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + }, + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/left/input/joystick" + }, + { + "inputs" : { + "click" : { + "output" : "/actions/platformer/in/jump" + }, + "position" : { + "output" : "/actions/platformer/in/move" + } + }, + "mode" : "joystick", + "path" : "/user/hand/right/input/joystick" + } + ] + } + }, + "controller_type" : "vive_cosmos_controller", + "description" : "", + "name" : "vive_cosmos_controller" +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json.meta b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json.meta new file mode 100644 index 00000000..b2677758 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/ExampleJSON/bindings_vive_cosmos_controller.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6a5f17813c0ba9469b04d26706046d9 +timeCreated: 1568830083 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins.meta b/Projects/SteamVR/Assets/SteamVR/Input/Plugins.meta new file mode 100644 index 00000000..894a598b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 57e97baa244e64b48a88406a77a552f8 +folderAsset: yes +timeCreated: 1521243443 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET.meta b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET.meta new file mode 100644 index 00000000..12fe5715 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: be52ebe91b1675c4d8a9e228b88f5115 +folderAsset: yes +timeCreated: 1521152334 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King new file mode 100644 index 00000000..dfaadbe4 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King.meta b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King.meta new file mode 100644 index 00000000..ec4c15a7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_James_Newton-King.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e849053ce418a6d428ac35039bb8d865 +timeCreated: 1521152334 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab new file mode 100644 index 00000000..5abe4837 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 SaladLab + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab.meta b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab.meta new file mode 100644 index 00000000..e59b142e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/LICENSE_SaladLab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67d718aebba8c7a46b689029511fb127 +timeCreated: 1521152334 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll new file mode 100644 index 00000000..6328dbed --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c0d896b41de72178ace5e3fce9f7b74977b3504be3727fa3b495166eccd3eba +size 360960 diff --git a/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll.meta b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll.meta new file mode 100644 index 00000000..4b2710f3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/Plugins/JSON.NET/Valve.Newtonsoft.Json.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 02d88905ea77cb74493cd26bf096eb24 +timeCreated: 1521152335 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs new file mode 100644 index 00000000..243b0424 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs @@ -0,0 +1,792 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// Action implementation overview: +// Actions are split into three parts: +// * Action: The user-accessible class that is the interface for accessing action data. +// There may be many Action instances per Actual SteamVR Action, but these instances are just interfaces to the data and should have virtually no overhead. +// * Action Map: This is basically a wrapper for a list of Action_Source instances. +// The idea being there is one Map per Actual SteamVR Action. +// These maps can be retrieved from a static store in SteamVR_Input so we're not duplicating data. +// * Action Source: This is a collection of cached data retrieved by calls to the underlying SteamVR Input system. +// Each Action Source has an inputSource that it is associated with. + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// This is the base level action for SteamVR Input Actions. All SteamVR_Action_In and SteamVR_Action_Out inherit from this. + /// Initializes the ulong handle for the action, has some helper references that all actions will have. + /// + public abstract class SteamVR_Action : SteamVR_Action, ISteamVR_Action where SourceMap : SteamVR_Action_Source_Map, new() where SourceElement : SteamVR_Action_Source, new() + { + /// + /// The map to the source elements, a dictionary of source elements. Should be accessed through the action indexer + /// + [NonSerialized] + protected SourceMap sourceMap; + + /// + /// Access this action restricted to individual input sources. + /// + /// The input source to access for this action + public virtual SourceElement this[SteamVR_Input_Sources inputSource] + { + get + { + return sourceMap[inputSource]; + } + } + + /// The full string path for this action + public override string fullPath + { + get + { + return sourceMap.fullPath; + } + } + + /// The underlying handle for this action used for native SteamVR Input calls + public override ulong handle { get { return sourceMap.handle; } } + + /// The actionset this action is contained within + public override SteamVR_ActionSet actionSet + { + get + { + return sourceMap.actionSet; + } + } + + /// The action direction of this action (in for input - most actions, out for output - mainly haptics) + public override SteamVR_ActionDirections direction + { + get + { + return sourceMap.direction; + } + } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action is bound and the actionset is active + public override bool active { get { return sourceMap[SteamVR_Input_Sources.Any].active; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get { return sourceMap[SteamVR_Input_Sources.Any].lastActive; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action is bound + public override bool activeBinding { get { return sourceMap[SteamVR_Input_Sources.Any].activeBinding; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action was bound at the previous update + public override bool lastActiveBinding { get { return sourceMap[SteamVR_Input_Sources.Any].lastActiveBinding; } } + + + [NonSerialized] + protected bool initialized = false; + + /// + /// Prepares the action to be initialized. Creating dictionaries, finding the right existing action, etc. + /// + public override void PreInitialize(string newActionPath) + { + actionPath = newActionPath; + + sourceMap = new SourceMap(); + sourceMap.PreInitialize(this, actionPath); + + initialized = true; + } + + protected override void CreateUninitialized(string newActionPath, bool caseSensitive) + { + actionPath = newActionPath; + + sourceMap = new SourceMap(); + sourceMap.PreInitialize(this, actionPath, false); + + needsReinit = true; + initialized = false; + } + + protected override void CreateUninitialized(string newActionSet, SteamVR_ActionDirections direction, string newAction, bool caseSensitive) + { + actionPath = SteamVR_Input_ActionFile_Action.CreateNewName(newActionSet, direction, newAction); + + sourceMap = new SourceMap(); + sourceMap.PreInitialize(this, actionPath, false); + + needsReinit = true; + initialized = false; + } + + /// + /// [Should not be called by user code] If it looks like we aren't attached to a real action then try and find the existing action for our given path. + /// + public override string TryNeedsInitData() + { + if (needsReinit && actionPath != null) + { + SteamVR_Action existingAction = FindExistingActionForPartialPath(actionPath); + + if (existingAction == null) + { + this.sourceMap = null; + } + else + { + this.actionPath = existingAction.fullPath; + this.sourceMap = (SourceMap)existingAction.GetSourceMap(); + + initialized = true; + needsReinit = false; + return actionPath; + } + } + + return null; + } + + + /// + /// [Should not be called by user code] Initializes the individual sources as well as the base map itself. + /// Gets the handle for the action from SteamVR and does any other SteamVR related setup that needs to be done + /// + public override void Initialize(bool createNew = false, bool throwErrors = true) + { + if (needsReinit) + { + TryNeedsInitData(); + } + + if (createNew) + { + sourceMap.Initialize(); + } + else + { + sourceMap = SteamVR_Input.GetActionDataFromPath(actionPath); + + if (sourceMap == null) + { +#if UNITY_EDITOR + if (throwErrors) + { + if (string.IsNullOrEmpty(actionPath)) + { + Debug.LogError("[SteamVR] Action has not been assigned."); + } + else + { + Debug.LogError("[SteamVR] Could not find action with path: " + actionPath); + } + } +#endif + } + } + + initialized = true; + } + + /// + /// [Should not be called by user code] Returns the underlying source map for the action. + /// [Should not be called by user code] Returns the underlying source map for the action. + /// + public override SteamVR_Action_Source_Map GetSourceMap() + { + return sourceMap; + } + + protected override void InitializeCopy(string newActionPath, SteamVR_Action_Source_Map newData) + { + this.actionPath = newActionPath; + this.sourceMap = (SourceMap)newData; + + initialized = true; + } + + protected void InitAfterDeserialize() + { + if (sourceMap != null) + { + if (sourceMap.fullPath != actionPath) + { + needsReinit = true; + TryNeedsInitData(); + } + + if (string.IsNullOrEmpty(actionPath)) + sourceMap = null; + } + + if (initialized == false) + { + Initialize(false, false); + } + } + + + /// + /// Gets a value indicating whether or not the action is currently bound and if the containing action set is active + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override bool GetActive(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].active; + } + + /// + /// Gets a value indicating whether or not the action is currently bound + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override bool GetActiveBinding(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].activeBinding; + } + + + /// + /// Gets the value from the previous update indicating whether or not the action was currently bound and if the containing action set was active + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override bool GetLastActive(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastActive; + } + + /// + /// Gets the value from the previous update indicating whether or not the action is currently bound + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override bool GetLastActiveBinding(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastActiveBinding; + } + } + + + [Serializable] + public abstract class SteamVR_Action : IEquatable, ISteamVR_Action + { + public SteamVR_Action() { } + + [SerializeField] + protected string actionPath; + + [SerializeField] + protected bool needsReinit; + + /// + /// Not recommended. Determines if we should do a lazy-loading style of updating actions where we don't check for their data until the code asks for it. Note: You will have to manually activate actions otherwise. Not recommended. + /// + public static bool startUpdatingSourceOnAccess = true; + + /// + /// [Should not be called by user code] Creates an actual action that will later be called by user code. + /// + public static CreateType Create(string newActionPath) where CreateType : SteamVR_Action, new() + { + CreateType action = new CreateType(); + action.PreInitialize(newActionPath); + return action; + } + + /// + /// [Should not be called by user code] Creates an uninitialized action that can be saved without being attached to a real action + /// + public static CreateType CreateUninitialized(string setName, SteamVR_ActionDirections direction, string newActionName, bool caseSensitive) where CreateType : SteamVR_Action, new() + { + CreateType action = new CreateType(); + action.CreateUninitialized(setName, direction, newActionName, caseSensitive); + return action; + } + + /// + /// [Should not be called by user code] Creates an uninitialized action that can be saved without being attached to a real action + /// + public static CreateType CreateUninitialized(string actionPath, bool caseSensitive) where CreateType : SteamVR_Action, new() + { + CreateType action = new CreateType(); + action.CreateUninitialized(actionPath, caseSensitive); + return action; + } + + /// + /// [Should not be called by user code] Gets a copy of the underlying source map so we're always using the same underlying event data + /// + public CreateType GetCopy() where CreateType : SteamVR_Action, new() + { + if (SteamVR_Input.ShouldMakeCopy()) //no need to make copies at runtime + { + CreateType action = new CreateType(); + action.InitializeCopy(this.actionPath, this.GetSourceMap()); + return action; + } + else + { + return (CreateType)this; + } + } + + public abstract string TryNeedsInitData(); + + protected abstract void InitializeCopy(string newActionPath, SteamVR_Action_Source_Map newData); + + /// The full string path for this action + public abstract string fullPath { get; } + + /// The underlying handle for this action used for native SteamVR Input calls + public abstract ulong handle { get; } + + /// The actionset this action is contained within + public abstract SteamVR_ActionSet actionSet { get; } + + /// The action direction of this action (in for input - most actions, out for output - mainly haptics) + public abstract SteamVR_ActionDirections direction { get; } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action set that contains this action is active for Any input source. + public bool setActive { get { return actionSet.IsActive(SteamVR_Input_Sources.Any); } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action is bound and the actionset is active + public abstract bool active { get; } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action is bound + public abstract bool activeBinding { get; } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action was bound and the actionset was active at the previous update + public abstract bool lastActive { get; } + + /// + /// + /// + public abstract bool lastActiveBinding { get; } + + /// + /// Prepares the action to be initialized. Creating dictionaries, finding the right existing action, etc. + /// + public abstract void PreInitialize(string newActionPath); + + protected abstract void CreateUninitialized(string newActionPath, bool caseSensitive); + + protected abstract void CreateUninitialized(string newActionSet, SteamVR_ActionDirections direction, string newAction, bool caseSensitive); + + /// + /// Initializes the individual sources as well as the base map itself. Gets the handle for the action from SteamVR and does any other SteamVR related setup that needs to be done + /// + public abstract void Initialize(bool createNew = false, bool throwNotSetError = true); + + /// Gets the last timestamp this action was changed. (by Time.realtimeSinceStartup) + /// The input source to use to select the last changed time + public abstract float GetTimeLastChanged(SteamVR_Input_Sources inputSource); + + public abstract SteamVR_Action_Source_Map GetSourceMap(); + + + /// + /// Gets a value indicating whether or not the action is currently bound and if the containing action set is active + /// + /// The device you would like to get data from. Any if the action is not device specific. + public abstract bool GetActive(SteamVR_Input_Sources inputSource); + + + /// + /// Gets a value indicating whether or not the containing action set is active + /// + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetSetActive(SteamVR_Input_Sources inputSource) + { + return actionSet.IsActive(inputSource); + } + + /// + /// Gets a value indicating whether or not the action is currently bound + /// + /// The device you would like to get data from. Any if the action is not device specific. + public abstract bool GetActiveBinding(SteamVR_Input_Sources inputSource); + + + /// + /// Gets the value from the previous update indicating whether or not the action is currently bound and if the containing action set is active + /// + /// The device you would like to get data from. Any if the action is not device specific. + public abstract bool GetLastActive(SteamVR_Input_Sources inputSource); + + /// + /// Gets the value from the previous update indicating whether or not the action is currently bound + /// + /// The device you would like to get data from. Any if the action is not device specific. + public abstract bool GetLastActiveBinding(SteamVR_Input_Sources inputSource); + + /// Returns the full action path for this action. + public string GetPath() + { + return actionPath; + } + + /// + /// Returns true if the data for this action is being updated for the specified input source. This can be triggered by querying the data + /// + public abstract bool IsUpdating(SteamVR_Input_Sources inputSource); + + + /// + /// Creates a hashcode from the full action path of this action + /// + public override int GetHashCode() + { + if (actionPath == null) + return 0; + else + return actionPath.GetHashCode(); + } + + /// + /// Compares two SteamVR_Actions by their action path instead of references + /// + public bool Equals(SteamVR_Action other) + { + if (ReferenceEquals(null, other)) + return false; + + //SteamVR_Action_Source_Map thisMap = this.GetSourceMap(); + //SteamVR_Action_Source_Map otherMap = other.GetSourceMap(); + + //return this.actionPath == other.actionPath && thisMap.fullPath == otherMap.fullPath; + return this.actionPath == other.actionPath; + } + + /// + /// Compares two SteamVR_Actions by their action path instead of references + /// + public override bool Equals(object other) + { + if (ReferenceEquals(null, other)) + { + if (string.IsNullOrEmpty(this.actionPath)) //if we haven't set a path, say this action is equal to null + return true; + if (this.GetSourceMap() == null) + return true; + + return false; + } + + if (ReferenceEquals(this, other)) + return true; + + if (other is SteamVR_Action) + return this.Equals((SteamVR_Action)other); + + return false; + } + + /// + /// Compares two SteamVR_Actions by their action path. + /// + public static bool operator !=(SteamVR_Action action1, SteamVR_Action action2) + { + return !(action1 == action2); + } + + /// + /// Compares two SteamVR_Actions by their action path. + /// + public static bool operator ==(SteamVR_Action action1, SteamVR_Action action2) + { + bool action1null = (ReferenceEquals(null, action1) || string.IsNullOrEmpty(action1.actionPath) || action1.GetSourceMap() == null); + bool action2null = (ReferenceEquals(null, action2) || string.IsNullOrEmpty(action2.actionPath) || action2.GetSourceMap() == null); + + if (action1null && action2null) + return true; + else if (action1null != action2null) + return false; + + return action1.Equals(action2); + } + + /// + /// Tries to find an existing action matching some subsection of an action path. More useful functions in SteamVR_Input. + /// + public static SteamVR_Action FindExistingActionForPartialPath(string path) + { + if (string.IsNullOrEmpty(path) || path.IndexOf('/') == -1) + return null; + + // 0 1 2 3 4 + // /actions/default/in/foobar + string[] pathParts = path.Split('/'); + SteamVR_Action existingAction; + + if (pathParts.Length >= 5 && string.IsNullOrEmpty(pathParts[2])) + { + string set = pathParts[2]; + string name = pathParts[4]; + existingAction = SteamVR_Input.GetBaseAction(set, name); + } + else + { + existingAction = SteamVR_Input.GetBaseActionFromPath(path); + } + + return existingAction; + } + + + [NonSerialized] + private string cachedShortName; + + /// Gets just the name of this action. The last part of the path for this action. Removes action set, and direction. + public string GetShortName() + { + if (cachedShortName == null) + { + cachedShortName = SteamVR_Input_ActionFile.GetShortName(fullPath); + } + + return cachedShortName; + } + + public void ShowOrigins() + { + OpenVR.Input.ShowActionOrigins(actionSet.handle, handle); + } + + public void HideOrigins() + { + OpenVR.Input.ShowActionOrigins(0,0); + } + } + + public abstract class SteamVR_Action_Source_Map : SteamVR_Action_Source_Map where SourceElement : SteamVR_Action_Source, new() + { + /// + /// Gets a reference to the action restricted to a certain input source. LeftHand or RightHand for example. + /// + /// The device you would like data from + public SourceElement this[SteamVR_Input_Sources inputSource] + { + get + { + return GetSourceElementForIndexer(inputSource); + } + } + + protected virtual void OnAccessSource(SteamVR_Input_Sources inputSource) { } + + protected SourceElement[] sources = new SourceElement[SteamVR_Input_Source.numSources]; + + /// + /// [Should not be called by user code] Initializes the individual sources as well as the base map itself. Gets the handle for the action from SteamVR and does any other SteamVR related setup that needs to be done + /// + public override void Initialize() + { + base.Initialize(); + + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + if (sources[sourceIndex] != null) + sources[sourceIndex].Initialize(); + } + } + + protected override void PreinitializeMap(SteamVR_Input_Sources inputSource, SteamVR_Action wrappingAction) + { + int sourceIndex = (int)inputSource; + sources[sourceIndex] = new SourceElement(); + sources[sourceIndex].Preinitialize(wrappingAction, inputSource); + } + + // Normally I'd just make the indexer virtual and override that but some unity versions don't like that + protected virtual SourceElement GetSourceElementForIndexer(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + + OnAccessSource(inputSource); + return sources[sourceIndex]; + } + } + + public abstract class SteamVR_Action_Source_Map + { + /// The full string path for this action (from the action manifest) + public string fullPath { get; protected set; } + + /// The underlying handle for this action used for native SteamVR Input calls. Retrieved on Initialization from SteamVR. + public ulong handle { get; protected set; } + + /// The ActionSet this action is contained within + public SteamVR_ActionSet actionSet { get; protected set; } + + /// The action direction of this action (in for input - most actions, out for output - haptics) + public SteamVR_ActionDirections direction { get; protected set; } + + /// The base SteamVR_Action this map corresponds to + public SteamVR_Action action; + + public virtual void PreInitialize(SteamVR_Action wrappingAction, string actionPath, bool throwErrors = true) + { + fullPath = actionPath; + action = wrappingAction; + + actionSet = SteamVR_Input.GetActionSetFromPath(GetActionSetPath()); + + direction = GetActionDirection(); + + SteamVR_Input_Sources[] sources = SteamVR_Input_Source.GetAllSources(); + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + PreinitializeMap(sources[sourceIndex], wrappingAction); + } + } + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + protected abstract void PreinitializeMap(SteamVR_Input_Sources inputSource, SteamVR_Action wrappingAction); + + /// + /// [Should not be called by user code] Initializes the handle for the action and any other related SteamVR data. + /// + public virtual void Initialize() + { + ulong newHandle = 0; + EVRInputError err = OpenVR.Input.GetActionHandle(fullPath.ToLowerInvariant(), ref newHandle); + handle = newHandle; + + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetActionHandle (" + fullPath.ToLowerInvariant() + ") error: " + err.ToString()); + } + + private string GetActionSetPath() + { + int actionsEndIndex = fullPath.IndexOf('/', 1); + int setStartIndex = actionsEndIndex + 1; + int setEndIndex = fullPath.IndexOf('/', setStartIndex); + int count = setEndIndex; + + return fullPath.Substring(0, count); + } + + private static string inLowered = "IN".ToLower(System.Globalization.CultureInfo.CurrentCulture); + private static string outLowered = "OUT".ToLower(System.Globalization.CultureInfo.CurrentCulture); + + private SteamVR_ActionDirections GetActionDirection() + { + int actionsEndIndex = fullPath.IndexOf('/', 1); + int setStartIndex = actionsEndIndex + 1; + int setEndIndex = fullPath.IndexOf('/', setStartIndex); + int directionEndIndex = fullPath.IndexOf('/', setEndIndex + 1); + int count = directionEndIndex - setEndIndex - 1; + string direction = fullPath.Substring(setEndIndex + 1, count); + + if (direction == inLowered) + return SteamVR_ActionDirections.In; + else if (direction == outLowered) + return SteamVR_ActionDirections.Out; + else + Debug.LogError("Could not find match for direction: " + direction); + return SteamVR_ActionDirections.In; + } + } + + public abstract class SteamVR_Action_Source : ISteamVR_Action_Source + { + /// The full string path for this action (from the action manifest) + public string fullPath { get { return action.fullPath; } } + + /// The underlying handle for this action used for native SteamVR Input calls. Retrieved on Initialization from SteamVR. + public ulong handle { get { return action.handle; } } + + /// The ActionSet this action is contained within + public SteamVR_ActionSet actionSet { get { return action.actionSet; } } + + /// The action direction of this action (in for input - most actions, out for output - haptics) + public SteamVR_ActionDirections direction { get { return action.direction; } } + + /// The input source that this instance corresponds to. ex. LeftHand, RightHand + public SteamVR_Input_Sources inputSource { get; protected set; } + + /// Returns true if the action set this is contained in is active for this input source (or Any) + public bool setActive { get { return actionSet.IsActive(inputSource); } } + + + /// Returns true if this action is bound and the ActionSet is active + public abstract bool active { get; } + + /// Returns true if the action is bound + public abstract bool activeBinding { get; } + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public abstract bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public abstract bool lastActiveBinding { get; } + + + protected ulong inputSourceHandle; + + protected SteamVR_Action action; + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public virtual void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + action = wrappingAction; + inputSource = forInputSource; + } + + public SteamVR_Action_Source() { } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, and any other related SteamVR data. + /// + public virtual void Initialize() + { + inputSourceHandle = SteamVR_Input_Source.GetHandle(inputSource); + } + } + + + public interface ISteamVR_Action : ISteamVR_Action_Source + { + /// Returns the active state of the action for the specified Input Source + /// The input source to check + bool GetActive(SteamVR_Input_Sources inputSource); + + /// Returns the name of the action without the action set or direction + string GetShortName(); + } + + + public interface ISteamVR_Action_Source + { + /// Returns true if this action is bound and the ActionSet is active + bool active { get; } + + /// Returns true if the action is bound + bool activeBinding { get; } + + /// Returns true if the action was bound and the ActionSet was active during the previous update + bool lastActive { get; } + + /// Returns true if the action was bound last update + bool lastActiveBinding { get; } + + /// The full string path for this action (from the action manifest) + string fullPath { get; } + + /// The underlying handle for this action used for native SteamVR Input calls. Retrieved on Initialization from SteamVR. + ulong handle { get; } + + /// The ActionSet this action is contained within + SteamVR_ActionSet actionSet { get; } + + /// The action direction of this action (in for input, out for output) + SteamVR_ActionDirections direction { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs.meta new file mode 100644 index 00000000..aec94546 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9f2ad3c310c8826479de4aadf38385d7 +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs new file mode 100644 index 00000000..bff5942f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs @@ -0,0 +1,13 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +namespace Valve.VR +{ + /// + /// The direction the the action. In actions get input, Out actions send input. + /// + public enum SteamVR_ActionDirections + { + In, + Out, + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs.meta new file mode 100644 index 00000000..d04b2853 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionDirections.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 685af21914dfaf6459336bd9e8d1966c +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs new file mode 100644 index 00000000..c01f1d29 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs @@ -0,0 +1,650 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; +using System.Text; + +namespace Valve.VR +{ + /// + /// Action sets are logical groupings of actions. Multiple sets can be active at one time. + /// + [Serializable] + public class SteamVR_ActionSet : IEquatable, ISteamVR_ActionSet, ISerializationCallbackReceiver + { + public SteamVR_ActionSet() { } + + [SerializeField] + private string actionSetPath; + + [NonSerialized] + protected SteamVR_ActionSet_Data setData; + + + /// All actions within this set (including out actions) + public SteamVR_Action[] allActions + { + get + { + if (initialized == false) + Initialize(); + + return setData.allActions; + } + } + + /// All IN actions within this set that are NOT pose or skeleton actions + public ISteamVR_Action_In[] nonVisualInActions + { + get + { + if (initialized == false) + Initialize(); + + return setData.nonVisualInActions; + } + } + + /// All pose and skeleton actions within this set + public ISteamVR_Action_In[] visualActions + { + get + { + if (initialized == false) + Initialize(); + + return setData.visualActions; + } + } + + /// All pose actions within this set + public SteamVR_Action_Pose[] poseActions + { + get + { + if (initialized == false) + Initialize(); + + return setData.poseActions; + } + } + + /// All skeleton actions within this set + public SteamVR_Action_Skeleton[] skeletonActions + { + get + { + if (initialized == false) + Initialize(); + + return setData.skeletonActions; + } + } + + /// All out actions within this set + public ISteamVR_Action_Out[] outActionArray + { + get + { + if (initialized == false) + Initialize(); + + return setData.outActionArray; + } + } + + + /// The full path to this action set (ex: /actions/in/default) + public string fullPath + { + get + { + if (initialized == false) + Initialize(); + + return setData.fullPath; + } + } + public string usage + { + get + { + if (initialized == false) + Initialize(); + + return setData.usage; + } + } + + public ulong handle + { + get + { + if (initialized == false) + Initialize(); + + return setData.handle; + } + } + + [NonSerialized] + protected bool initialized = false; + + + public static CreateType Create(string newSetPath) where CreateType : SteamVR_ActionSet, new() + { + CreateType actionSet = new CreateType(); + actionSet.PreInitialize(newSetPath); + return actionSet; + } + public static CreateType CreateFromName(string newSetName) where CreateType : SteamVR_ActionSet, new() + { + CreateType actionSet = new CreateType(); + actionSet.PreInitialize(SteamVR_Input_ActionFile_ActionSet.GetPathFromName(newSetName)); + return actionSet; + } + + public void PreInitialize(string newActionPath) + { + actionSetPath = newActionPath; + + setData = new SteamVR_ActionSet_Data(); + setData.fullPath = actionSetPath; + setData.PreInitialize(); + + initialized = true; + } + + public virtual void FinishPreInitialize() + { + setData.FinishPreInitialize(); + } + + /// + /// Initializes the handle for the action + /// + public virtual void Initialize(bool createNew = false, bool throwErrors = true) + { + if (createNew) + { + setData.Initialize(); + } + else + { + setData = SteamVR_Input.GetActionSetDataFromPath(actionSetPath); + + if (setData == null) + { +#if UNITY_EDITOR + if (throwErrors) + { + if (string.IsNullOrEmpty(actionSetPath)) + { + Debug.LogError("[SteamVR] Action has not been assigned."); + } + else + { + Debug.LogError("[SteamVR] Could not find action with path: " + actionSetPath); + } + } +#endif + } + } + + initialized = true; + } + + public string GetPath() + { + return actionSetPath; + } + + /// + /// Returns whether the set is currently active or not. + /// + /// The device to check. Any means all devices here (not left or right, but all) + public bool IsActive(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any) + { + return setData.IsActive(source); + } + + /// + /// Returns the last time this action set was changed (set to active or inactive) + /// + /// The device to check. Any means all devices here (not left or right, but all) + public float GetTimeLastChanged(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any) + { + return setData.GetTimeLastChanged(source); + } + + /// + /// Activate this set so its actions can be called + /// + /// Disable all other action sets at the same time + /// The priority of this action set. If you have two actions bound to the same input (button) the higher priority set will override the lower priority. If they are the same priority both will execute. + /// Will activate this action set only for the specified source. Any if you want to activate for everything + public void Activate(SteamVR_Input_Sources activateForSource = SteamVR_Input_Sources.Any, int priority = 0, bool disableAllOtherActionSets = false) + { + setData.Activate(activateForSource, priority, disableAllOtherActionSets); + } + + /// + /// Deactivate the action set so its actions can no longer be called + /// + public void Deactivate(SteamVR_Input_Sources forSource = SteamVR_Input_Sources.Any) + { + setData.Deactivate(forSource); + } + + /// Gets the last part of the path for this action. Removes "actions" and direction. + public string GetShortName() + { + return setData.GetShortName(); + } + + /// + /// Shows all the bindings for the actions in this set. + /// + /// Highlights the binding of the passed in action (must be in an active set) + /// + public bool ShowBindingHints(ISteamVR_Action_In originToHighlight = null) + { + if (originToHighlight == null) + return SteamVR_Input.ShowBindingHints(this); + else + return SteamVR_Input.ShowBindingHints(originToHighlight); + } + + + public bool ReadRawSetActive(SteamVR_Input_Sources inputSource) + { + return setData.ReadRawSetActive(inputSource); + } + + public float ReadRawSetLastChanged(SteamVR_Input_Sources inputSource) + { + return setData.ReadRawSetLastChanged(inputSource); + } + + public int ReadRawSetPriority(SteamVR_Input_Sources inputSource) + { + return setData.ReadRawSetPriority(inputSource); + } + + public SteamVR_ActionSet_Data GetActionSetData() + { + return setData; + } + + public CreateType GetCopy() where CreateType : SteamVR_ActionSet, new() + { + if (SteamVR_Input.ShouldMakeCopy()) //no need to make copies at runtime + { + CreateType actionSet = new CreateType(); + actionSet.actionSetPath = this.actionSetPath; + actionSet.setData = this.setData; + actionSet.initialized = true; + return actionSet; + } + else + { + return (CreateType)this; + } + } + + public bool Equals(SteamVR_ActionSet other) + { + if (ReferenceEquals(null, other)) + return false; + + return this.actionSetPath == other.actionSetPath; + } + + public override bool Equals(object other) + { + if (ReferenceEquals(null, other)) + { + if (string.IsNullOrEmpty(this.actionSetPath)) //if we haven't set a path, say this action set is equal to null + return true; + return false; + } + + if (ReferenceEquals(this, other)) + return true; + + if (other is SteamVR_ActionSet) + return this.Equals((SteamVR_ActionSet)other); + + return false; + } + + public override int GetHashCode() + { + if (actionSetPath == null) + return 0; + else + return actionSetPath.GetHashCode(); + } + + public static bool operator !=(SteamVR_ActionSet set1, SteamVR_ActionSet set2) + { + return !(set1 == set2); + } + + public static bool operator ==(SteamVR_ActionSet set1, SteamVR_ActionSet set2) + { + bool set1null = (ReferenceEquals(null, set1) || string.IsNullOrEmpty(set1.actionSetPath) || set1.GetActionSetData() == null); + bool set2null = (ReferenceEquals(null, set2) || string.IsNullOrEmpty(set2.actionSetPath) || set2.GetActionSetData() == null); + + if (set1null && set2null) + return true; + else if (set1null != set2null) + return false; + + return set1.Equals(set2); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + if (setData != null) + { + if (setData.fullPath != actionSetPath) + { + setData = SteamVR_Input.GetActionSetDataFromPath(actionSetPath); + } + } + + if (initialized == false) + Initialize(false, false); + } + } + /// + /// Action sets are logical groupings of actions. Multiple sets can be active at one time. + /// + public class SteamVR_ActionSet_Data : ISteamVR_ActionSet + { + public SteamVR_ActionSet_Data() { } + + /// All actions within this set (including out actions) + public SteamVR_Action[] allActions { get; set; } + + /// All IN actions within this set that are NOT pose or skeleton actions + public ISteamVR_Action_In[] nonVisualInActions { get; set; } + + /// All pose and skeleton actions within this set + public ISteamVR_Action_In[] visualActions { get; set; } + + /// All pose actions within this set + public SteamVR_Action_Pose[] poseActions { get; set; } + + /// All skeleton actions within this set + public SteamVR_Action_Skeleton[] skeletonActions { get; set; } + + /// All out actions within this set + public ISteamVR_Action_Out[] outActionArray { get; set; } + + + /// The full path to this action set (ex: /actions/in/default) + public string fullPath { get; set; } + public string usage { get; set; } + + + public ulong handle { get; set; } + + protected bool[] rawSetActive = new bool[SteamVR_Input_Source.numSources]; + + protected float[] rawSetLastChanged = new float[SteamVR_Input_Source.numSources]; + + protected int[] rawSetPriority = new int[SteamVR_Input_Source.numSources]; + + protected bool initialized = false; + + public void PreInitialize() + { + } + + public void FinishPreInitialize() + { + List allActionsList = new List(); + List nonVisualInActionsList = new List(); + List visualActionsList = new List(); + List poseActionsList = new List(); + List skeletonActionsList = new List(); + List outActionList = new List(); + + if (SteamVR_Input.actions == null) + { + Debug.LogError("[SteamVR Input] Actions not initialized!"); + return; + } + + for (int actionIndex = 0; actionIndex < SteamVR_Input.actions.Length; actionIndex++) + { + SteamVR_Action action = SteamVR_Input.actions[actionIndex]; + + if (action.actionSet.GetActionSetData() == this) + { + allActionsList.Add(action); + + if (action is ISteamVR_Action_Boolean || action is ISteamVR_Action_Single || action is ISteamVR_Action_Vector2 || action is ISteamVR_Action_Vector3) + { + nonVisualInActionsList.Add((ISteamVR_Action_In)action); + } + else if (action is SteamVR_Action_Pose) + { + visualActionsList.Add((ISteamVR_Action_In)action); + poseActionsList.Add((SteamVR_Action_Pose)action); + } + else if (action is SteamVR_Action_Skeleton) + { + visualActionsList.Add((ISteamVR_Action_In)action); + skeletonActionsList.Add((SteamVR_Action_Skeleton)action); + } + else if (action is ISteamVR_Action_Out) + { + outActionList.Add((ISteamVR_Action_Out)action); + } + else + { + Debug.LogError("[SteamVR Input] Action doesn't implement known interface: " + action.fullPath); + } + } + } + + allActions = allActionsList.ToArray(); + nonVisualInActions = nonVisualInActionsList.ToArray(); + visualActions = visualActionsList.ToArray(); + poseActions = poseActionsList.ToArray(); + skeletonActions = skeletonActionsList.ToArray(); + outActionArray = outActionList.ToArray(); + } + + public void Initialize() + { + ulong newHandle = 0; + EVRInputError err = OpenVR.Input.GetActionSetHandle(fullPath.ToLower(), ref newHandle); + handle = newHandle; + + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetActionSetHandle (" + fullPath + ") error: " + err.ToString()); + + initialized = true; + } + + /// + /// Returns whether the set is currently active or not. + /// + /// The device to check. Any means all devices here (not left or right, but all) + public bool IsActive(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any) + { + int sourceIndex = (int)source; + + if (initialized) + return rawSetActive[sourceIndex] || rawSetActive[0]; + + return false; + } + + /// + /// Returns the last time this action set was changed (set to active or inactive) + /// + /// The device to check. Any means all devices here (not left or right, but all) + public float GetTimeLastChanged(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any) + { + int sourceIndex = (int)source; + + if (initialized) + return rawSetLastChanged[sourceIndex]; + return 0; + } + + /// + /// Activate this set so its actions can be called + /// + /// Disable all other action sets at the same time + /// The priority of this action set. If you have two actions bound to the same input (button) the higher priority set will override the lower priority. If they are the same priority both will execute. + /// Will activate this action set only for the specified source. Any if you want to activate for everything + public void Activate(SteamVR_Input_Sources activateForSource = SteamVR_Input_Sources.Any, int priority = 0, bool disableAllOtherActionSets = false) + { + int sourceIndex = (int)activateForSource; + + if (disableAllOtherActionSets) + SteamVR_ActionSet_Manager.DisableAllActionSets(); + + if (rawSetActive[sourceIndex] == false) + { + rawSetActive[sourceIndex] = true; + SteamVR_ActionSet_Manager.SetChanged(); + + rawSetLastChanged[sourceIndex] = Time.realtimeSinceStartup; + } + + if (rawSetPriority[sourceIndex] != priority) + { + rawSetPriority[sourceIndex] = priority; + SteamVR_ActionSet_Manager.SetChanged(); + + rawSetLastChanged[sourceIndex] = Time.realtimeSinceStartup; + } + } + + /// + /// Deactivate the action set so its actions can no longer be called + /// + public void Deactivate(SteamVR_Input_Sources forSource = SteamVR_Input_Sources.Any) + { + int sourceIndex = (int)forSource; + + if (rawSetActive[sourceIndex] != false) + { + rawSetLastChanged[sourceIndex] = Time.realtimeSinceStartup; + SteamVR_ActionSet_Manager.SetChanged(); + } + + rawSetActive[sourceIndex] = false; + rawSetPriority[sourceIndex] = 0; + } + + private string cachedShortName; + + /// Gets the last part of the path for this action. Removes "actions" and direction. + public string GetShortName() + { + if (cachedShortName == null) + { + cachedShortName = SteamVR_Input_ActionFile.GetShortName(fullPath); + } + + return cachedShortName; + } + + public bool ReadRawSetActive(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + return rawSetActive[sourceIndex]; + } + + public float ReadRawSetLastChanged(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + return rawSetLastChanged[sourceIndex]; + } + + public int ReadRawSetPriority(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + return rawSetPriority[sourceIndex]; + } + } + /// + /// Action sets are logical groupings of actions. Multiple sets can be active at one time. + /// + public interface ISteamVR_ActionSet + { + /// All actions within this set (including out actions) + SteamVR_Action[] allActions { get; } + + /// All IN actions within this set that are NOT pose or skeleton actions + ISteamVR_Action_In[] nonVisualInActions { get; } + + /// All pose and skeleton actions within this set + ISteamVR_Action_In[] visualActions { get; } + + /// All pose actions within this set + SteamVR_Action_Pose[] poseActions { get; } + + /// All skeleton actions within this set + SteamVR_Action_Skeleton[] skeletonActions { get; } + + /// All out actions within this set + ISteamVR_Action_Out[] outActionArray { get; } + + + /// The full path to this action set (ex: /actions/in/default) + string fullPath { get; } + + /// How the binding UI should display this set + string usage { get; } + + ulong handle { get; } + + bool ReadRawSetActive(SteamVR_Input_Sources inputSource); + float ReadRawSetLastChanged(SteamVR_Input_Sources inputSource); + int ReadRawSetPriority(SteamVR_Input_Sources inputSource); + + + /// + /// Returns whether the set is currently active or not. + /// + /// The device to check. Any means all devices here (not left or right, but all) + bool IsActive(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any); + + /// + /// Returns the last time this action set was changed (set to active or inactive) + /// + /// The device to check. Any means all devices here (not left or right, but all) + float GetTimeLastChanged(SteamVR_Input_Sources source = SteamVR_Input_Sources.Any); + + /// + /// Activate this set so its actions can be called + /// + /// Disable all other action sets at the same time + /// The priority of this action set. If you have two actions bound to the same input (button) the higher priority set will override the lower priority. If they are the same priority both will execute. + /// Will activate this action set only for the specified source. Any if you want to activate for everything + void Activate(SteamVR_Input_Sources activateForSource = SteamVR_Input_Sources.Any, int priority = 0, bool disableAllOtherActionSets = false); + + /// Deactivate the action set so its actions can no longer be called + void Deactivate(SteamVR_Input_Sources forSource = SteamVR_Input_Sources.Any); + + /// Gets the last part of the path for this action. Removes "actions" and direction. + string GetShortName(); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs.meta new file mode 100644 index 00000000..3d43494e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fff79524d13a43d4a995dccedb5085c4 +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs new file mode 100644 index 00000000..2549563f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs @@ -0,0 +1,146 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; +using System.Text; + +namespace Valve.VR +{ + /// + /// Action sets are logical groupings of actions. Multiple sets can be active at one time. + /// + public static class SteamVR_ActionSet_Manager + { + public static VRActiveActionSet_t[] rawActiveActionSetArray; + + [NonSerialized] + private static uint activeActionSetSize; + + private static bool changed = false; + + public static void Initialize() + { + activeActionSetSize = (uint)(Marshal.SizeOf(typeof(VRActiveActionSet_t))); + } + + /// + /// Disable all known action sets. + /// + public static void DisableAllActionSets() + { + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionSets.Length; actionSetIndex++) + { + SteamVR_Input.actionSets[actionSetIndex].Deactivate(SteamVR_Input_Sources.Any); + SteamVR_Input.actionSets[actionSetIndex].Deactivate(SteamVR_Input_Sources.LeftHand); + SteamVR_Input.actionSets[actionSetIndex].Deactivate(SteamVR_Input_Sources.RightHand); + } + } + + private static int lastFrameUpdated; + public static void UpdateActionStates(bool force = false) + { + if (force || Time.frameCount != lastFrameUpdated) + { + lastFrameUpdated = Time.frameCount; + + if (changed) + { + UpdateActionSetsArray(); + } + + if (rawActiveActionSetArray != null && rawActiveActionSetArray.Length > 0) + { + EVRInputError err = OpenVR.Input.UpdateActionState(rawActiveActionSetArray, activeActionSetSize); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] UpdateActionState error: " + err.ToString()); + //else Debug.Log("Action sets activated: " + activeActionSets.Length); + } + else + { + //Debug.LogWarning("No sets active"); + } + } + } + + public static void SetChanged() + { + changed = true; + } + + private static void UpdateActionSetsArray() + { + List activeActionSetsList = new List(); + + SteamVR_Input_Sources[] sources = SteamVR_Input_Source.GetAllSources(); + + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet set = SteamVR_Input.actionSets[actionSetIndex]; + + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + SteamVR_Input_Sources source = sources[sourceIndex]; + + if (set.ReadRawSetActive(source)) + { + VRActiveActionSet_t activeSet = new VRActiveActionSet_t(); + activeSet.ulActionSet = set.handle; + activeSet.nPriority = set.ReadRawSetPriority(source); + activeSet.ulRestrictedToDevice = SteamVR_Input_Source.GetHandle(source); + + int insertionIndex = 0; + for (insertionIndex = 0; insertionIndex < activeActionSetsList.Count; insertionIndex++) + { + if (activeActionSetsList[insertionIndex].nPriority > activeSet.nPriority) + break; + } + activeActionSetsList.Insert(insertionIndex, activeSet); + } + } + } + + changed = false; + + rawActiveActionSetArray = activeActionSetsList.ToArray(); + + if (Application.isEditor || updateDebugTextInBuilds) + UpdateDebugText(); + } + + public static SteamVR_ActionSet GetSetFromHandle(ulong handle) + { + for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet set = SteamVR_Input.actionSets[actionSetIndex]; + if (set.handle == handle) + return set; + } + + return null; + } + + public static string debugActiveSetListText; + public static bool updateDebugTextInBuilds = false; + private static void UpdateDebugText() + { + StringBuilder stringBuilder = new StringBuilder(); + + for (int activeIndex = 0; activeIndex < rawActiveActionSetArray.Length; activeIndex++) + { + VRActiveActionSet_t set = rawActiveActionSetArray[activeIndex]; + stringBuilder.Append(set.nPriority); + stringBuilder.Append("\t"); + stringBuilder.Append(SteamVR_Input_Source.GetSource(set.ulRestrictedToDevice)); + stringBuilder.Append("\t"); + stringBuilder.Append(GetSetFromHandle(set.ulActionSet).GetShortName()); + stringBuilder.Append("\n"); + } + + debugActiveSetListText = stringBuilder.ToString(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs.meta new file mode 100644 index 00000000..dd4d46b0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActionSet_Manager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 672d3f475539e5242af05932e937908b +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs new file mode 100644 index 00000000..c8b27144 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs @@ -0,0 +1,409 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// Boolean actions are either true or false. There are a variety of helper events included that will fire for the given input source. They're prefixed with "on". + /// + public class SteamVR_Action_Boolean : SteamVR_Action_In, ISteamVR_Action_Boolean, ISerializationCallbackReceiver + { + public delegate void StateDownHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void StateUpHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void StateHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void ActiveChangeHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState); + public delegate void UpdateHandler(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState); + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever a state changes from false to true or true to false + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the boolean action is true and gets updated + public event StateHandler onState + { add { sourceMap[SteamVR_Input_Sources.Any].onState += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onState -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the state of the boolean action has changed from false to true in the most recent update + public event StateDownHandler onStateDown + { add { sourceMap[SteamVR_Input_Sources.Any].onStateDown += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onStateDown -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the state of the boolean action has changed from true to false in the most recent update + public event StateUpHandler onStateUp + { add { sourceMap[SteamVR_Input_Sources.Any].onStateUp += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onStateUp -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the bound state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + + /// [Shortcut to: SteamVR_Input_Sources.Any] True when the boolean action is true + public bool state { get { return sourceMap[SteamVR_Input_Sources.Any].state; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True when the boolean action is true and the last state was false + public bool stateDown { get { return sourceMap[SteamVR_Input_Sources.Any].stateDown; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True when the boolean action is false and the last state was true + public bool stateUp { get { return sourceMap[SteamVR_Input_Sources.Any].stateUp; } } + + + /// [Shortcut to: SteamVR_Input_Sources.Any] (previous update) True when the boolean action is true + public bool lastState { get { return sourceMap[SteamVR_Input_Sources.Any].lastState; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] (previous update) True when the boolean action is true and the last state was false + public bool lastStateDown { get { return sourceMap[SteamVR_Input_Sources.Any].lastStateDown; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] (previous update) True when the boolean action is false and the last state was true + public bool lastStateUp { get { return sourceMap[SteamVR_Input_Sources.Any].lastStateUp; } } + + + public SteamVR_Action_Boolean() { } + + /// Returns true if the value of the action has been changed to true (from false) in the most recent update. + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetStateDown(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].stateDown; + } + + /// Returns true if the value of the action has been changed to false (from true) in the most recent update. + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetStateUp(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].stateUp; + } + + /// Returns true if the value of the action (state) is currently true + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetState(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].state; + } + + /// [For the previous update] Returns true if the value of the action has been set to true (from false). + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetLastStateDown(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastStateDown; + } + + /// [For the previous update] Returns true if the value of the action has been set to false (from true). + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetLastStateUp(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastStateUp; + } + + /// [For the previous update] Returns true if the value of the action was true. + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetLastState(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastState; + } + + /// Executes a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the active state of this action (with the specified inputSource) changes. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) changes + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnChangeListener(ChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnChangeListener(ChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnUpdateListener(UpdateHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) changes to true (from false). + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnStateDownListener(StateDownHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onStateDown += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnStateDownListener(StateDownHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onStateDown -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) changes to false (from true). + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnStateUpListener(StateUpHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onStateUp += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnStateUpListener(StateUpHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onStateUp -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + } + + public class SteamVR_Action_Boolean_Source_Map : SteamVR_Action_In_Source_Map + { + } + + public class SteamVR_Action_Boolean_Source : SteamVR_Action_In_Source, ISteamVR_Action_Boolean + { + protected static uint actionData_size = 0; + + /// Event fires when the state of the action changes from false to true + public event SteamVR_Action_Boolean.StateDownHandler onStateDown; + + /// Event fires when the state of the action changes from true to false + public event SteamVR_Action_Boolean.StateUpHandler onStateUp; + + /// Event fires when the state of the action is true and the action gets updated + public event SteamVR_Action_Boolean.StateHandler onState; + + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Boolean.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Boolean.ActiveChangeHandler onActiveBindingChange; + + /// Event fires when the state of the action changes from false to true or true to false + public event SteamVR_Action_Boolean.ChangeHandler onChange; + + /// Event fires when the action is updated + public event SteamVR_Action_Boolean.UpdateHandler onUpdate; + + /// The current value of the boolean action. Note: Will only return true if the action is also active. + public bool state { get { return active && actionData.bState; } } + + /// True when the action's state changes from false to true. Note: Will only return true if the action is also active. + /// Will only return true if the action is also active. + public bool stateDown { get { return active && actionData.bState && actionData.bChanged; } } + + /// True when the action's state changes from true to false. Note: Will only return true if the action is also active. + /// Will only return true if the action is also active. + public bool stateUp { get { return active && actionData.bState == false && actionData.bChanged; } } + + /// True when the action's state changed during the most recent update. Note: Will only return true if the action is also active. + /// ActionSet is ignored since get is coming from the native struct. + public override bool changed { get { return active && actionData.bChanged; } protected set { } } + + + /// The value of the action's 'state' during the previous update + /// Always returns the previous update state + public bool lastState { get { return lastActionData.bState; } } + + /// The value of the action's 'stateDown' during the previous update + /// Always returns the previous update state + public bool lastStateDown { get { return lastActionData.bState && lastActionData.bChanged; } } + + /// The value of the action's 'stateUp' during the previous update + /// Always returns the previous update state + public bool lastStateUp { get { return lastActionData.bState == false && lastActionData.bChanged; } } + + /// The value of the action's 'changed' during the previous update + /// Always returns the previous update state. Set is ignored since get is coming from the native struct. + public override bool lastChanged { get { return lastActionData.bChanged; } protected set { } } + + /// The handle to the origin of the component that was used to update the value for this action + public override ulong activeOrigin + { + get + { + if (active) + return actionData.activeOrigin; + + return 0; + } + } + + /// The handle to the origin of the component that was used to update the value for this action (for the previous update) + public override ulong lastActiveOrigin { get { return lastActionData.activeOrigin; } } + + /// Returns true if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } } + + /// Returns true if the action is bound + public override bool activeBinding { get { return actionData.bActive; } } + + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public override bool lastActiveBinding { get { return lastActionData.bActive; } } + + + protected InputDigitalActionData_t actionData = new InputDigitalActionData_t(); + protected InputDigitalActionData_t lastActionData = new InputDigitalActionData_t(); + + protected SteamVR_Action_Boolean booleanAction; + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + booleanAction = (SteamVR_Action_Boolean)wrappingAction; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (actionData_size == 0) + actionData_size = (uint)Marshal.SizeOf(typeof(InputDigitalActionData_t)); + + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + lastActionData = actionData; + lastActive = active; + + EVRInputError err = OpenVR.Input.GetDigitalActionData(action.handle, ref actionData, actionData_size, inputSourceHandle); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetDigitalActionData error (" + action.fullPath + "): " + err.ToString() + " handle: " + action.handle.ToString()); + + if (changed) + changedTime = Time.realtimeSinceStartup + actionData.fUpdateTime; + + updateTime = Time.realtimeSinceStartup; + + if (active) + { + if (onStateDown != null && stateDown) + onStateDown.Invoke(booleanAction, inputSource); + + if (onStateUp != null && stateUp) + onStateUp.Invoke(booleanAction, inputSource); + + if (onState != null && state) + onState.Invoke(booleanAction, inputSource); + + if (onChange != null && changed) + onChange.Invoke(booleanAction, inputSource, state); + + if (onUpdate != null) + onUpdate.Invoke(booleanAction, inputSource, state); + } + + if (onActiveBindingChange != null && lastActiveBinding != activeBinding) + onActiveBindingChange.Invoke(booleanAction, inputSource, activeBinding); + + if (onActiveChange != null && lastActive != active) + onActiveChange.Invoke(booleanAction, inputSource, activeBinding); + } + } + + public interface ISteamVR_Action_Boolean : ISteamVR_Action_In_Source + { + /// The current value of the boolean action. Note: Will only return true if the action is also active. + bool state { get; } + + /// True when the action's state changes from false to true. Note: Will only return true if the action is also active. + bool stateDown { get; } + + /// True when the action's state changes from true to false. Note: Will only return true if the action is also active. + bool stateUp { get; } + + /// The value of the action's 'state' during the previous update + /// Always returns the previous update state + bool lastState { get; } + + /// The value of the action's 'stateDown' during the previous update + /// Always returns the previous update state + bool lastStateDown { get; } + + /// The value of the action's 'stateUp' during the previous update + /// Always returns the previous update state + bool lastStateUp { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs.meta new file mode 100644 index 00000000..1b098b63 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Boolean.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c3d755cf6cc936488afcb037b69341e +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs new file mode 100644 index 00000000..e958d1fa --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs @@ -0,0 +1,432 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// In actions are all input type actions. Boolean, Single, Vector2, Vector3, Skeleton, and Pose. + /// + public abstract class SteamVR_Action_In : SteamVR_Action, ISteamVR_Action_In + where SourceMap : SteamVR_Action_In_Source_Map, new() + where SourceElement : SteamVR_Action_In_Source, new() + { + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action has been changed since the previous update + public bool changed { get { return sourceMap[SteamVR_Input_Sources.Any].changed; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Returns true if the action was changed for the previous update cycle + public bool lastChanged { get { return sourceMap[SteamVR_Input_Sources.Any].changed; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The time the action was changed (Time.realtimeSinceStartup) + public float changedTime { get { return sourceMap[SteamVR_Input_Sources.Any].changedTime; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The time the action was updated (Time.realtimeSinceStartup) + public float updateTime { get { return sourceMap[SteamVR_Input_Sources.Any].updateTime; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The handle to the component that triggered the action to be changed + public ulong activeOrigin { get { return sourceMap[SteamVR_Input_Sources.Any].activeOrigin; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The handle to the component that triggered the action to be changed in the previous update + public ulong lastActiveOrigin { get { return sourceMap[SteamVR_Input_Sources.Any].lastActiveOrigin; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The input source that triggered the action to be changed + public SteamVR_Input_Sources activeDevice { get { return sourceMap[SteamVR_Input_Sources.Any].activeDevice; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The device index (used by Render Models) used by the device that triggered the action to be changed + public uint trackedDeviceIndex { get { return sourceMap[SteamVR_Input_Sources.Any].trackedDeviceIndex; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The name of the component on the render model that caused the action to be changed (not localized) + public string renderModelComponentName { get { return sourceMap[SteamVR_Input_Sources.Any].renderModelComponentName; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The full localized name for the component, controller, and hand that caused the action to be changed + public string localizedOriginName { get { return sourceMap[SteamVR_Input_Sources.Any].localizedOriginName; } } + + /// + /// [Should not be called by user code] + /// Updates the data for all the input sources the system has detected need to be updated. + /// + public virtual void UpdateValues() + { + sourceMap.UpdateValues(); + } + + /// + /// The name of the component on the render model that caused the action to be updated (not localized) + /// + /// The device you would like to get data from. Any if the action is not device specific. + public virtual string GetRenderModelComponentName(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].renderModelComponentName; + } + + /// + /// The input source that triggered the action to be updated last + /// + /// The device you would like to get data from. Any if the action is not device specific. + public virtual SteamVR_Input_Sources GetActiveDevice(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].activeDevice; + } + + /// + /// Gets the device index for the controller this action is bound to. This can be used for render models or the pose tracking system. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public virtual uint GetDeviceIndex(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].trackedDeviceIndex; + } + + /// + /// Indicates whether or not the data for this action and specified input source has changed since the last update. Determined by SteamVR or 'changeTolerance'. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public virtual bool GetChanged(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].changed; + } + + /// + /// The time the action was changed (Time.realtimeSinceStartup) + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override float GetTimeLastChanged(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].changedTime; + } + + + /// + /// Gets the localized name of the device that the action corresponds to. Include as many EVRInputStringBits as you want to add to the localized string + /// + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. ex: "Left Hand". + /// VRInputString_ControllerType - What kind of controller the user has in that hand. ex: "Vive Controller". + /// VRInputString_InputSource - What part of that controller is the origin. ex: "Trackpad". + /// VRInputString_All - All of the above. ex: "Left Hand Vive Controller Trackpad". + /// + /// + public string GetLocalizedOriginPart(SteamVR_Input_Sources inputSource, params EVRInputStringBits[] localizedParts) + { + return sourceMap[inputSource].GetLocalizedOriginPart(localizedParts); + } + + /// + /// Gets the localized full name of the device that the action was updated by. ex: "Left Hand Vive Controller Trackpad" + /// + /// The device you would like to get data from. Any if the action is not device specific. + public string GetLocalizedOrigin(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].GetLocalizedOrigin(); + } + + /// + /// [Should not be called by user code] + /// Returns whether the system has determined this source should be updated (based on code calls) + /// Should only be used if you've set SteamVR_Action.startUpdatingSourceOnAccess to false. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override bool IsUpdating(SteamVR_Input_Sources inputSource) + { + return sourceMap.IsUpdating(inputSource); + } + + /// + /// [Should not be called by user code] + /// Forces the system to start updating the data for this action and the specified input source. + /// Should only be used if you've set SteamVR_Action.startUpdatingSourceOnAccess to false. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public void ForceAddSourceToUpdateList(SteamVR_Input_Sources inputSource) + { + sourceMap.ForceAddSourceToUpdateList(inputSource); + } + } + + public class SteamVR_Action_In_Source_Map : SteamVR_Action_Source_Map + where SourceElement : SteamVR_Action_In_Source, new() + { + protected List updatingSources = new List(); + + /// + /// [Should not be called by user code] + /// Returns whether the system has determined this source should be updated (based on code calls) + /// Should only be used if you've set SteamVR_Action.startUpdatingSourceOnAccess to false. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public bool IsUpdating(SteamVR_Input_Sources inputSource) + { + int isUpdatingSourceIndex = (int)inputSource; + + for (int sourceIndex = 0; sourceIndex < updatingSources.Count; sourceIndex++) + { + if (isUpdatingSourceIndex == updatingSources[sourceIndex]) + return true; + } + + return false; + } + + protected override void OnAccessSource(SteamVR_Input_Sources inputSource) + { + if (SteamVR_Action.startUpdatingSourceOnAccess) + { + ForceAddSourceToUpdateList(inputSource); + } + } + + /// + /// [Should not be called by user code] + /// Forces the system to start updating the data for this action and the specified input source. + /// Should only be used if you've set SteamVR_Action.startUpdatingSourceOnAccess to false. + /// + /// The device you would like to get data from. Any if the action is not device specific. + public void ForceAddSourceToUpdateList(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + + if (sources[sourceIndex] == null) + { + sources[sourceIndex] = new SourceElement(); + } + + if (sources[sourceIndex].isUpdating == false) + { + updatingSources.Add(sourceIndex); + sources[sourceIndex].isUpdating = true; + + if (SteamVR_Input.isStartupFrame == false) + sources[sourceIndex].UpdateValue(); + } + } + + /// + /// [Should not be called by user code] + /// Updates the data for all the input sources the system has detected need to be updated. + /// + public void UpdateValues() + { + for (int sourceIndex = 0; sourceIndex < updatingSources.Count; sourceIndex++) + { + sources[updatingSources[sourceIndex]].UpdateValue(); + } + } + } + + /// + /// In actions are all input type actions. Boolean, Single, Vector2, Vector3, Skeleton, and Pose. + /// This class fires onChange and onUpdate events. + /// + public abstract class SteamVR_Action_In_Source : SteamVR_Action_Source, ISteamVR_Action_In_Source + { + protected static uint inputOriginInfo_size = 0; + + /// + /// [Should not be called by user code] + /// Forces the system to start updating the data for this action and the specified input source. + /// Should only be used if you've set SteamVR_Action.startUpdatingSourceOnAccess to false. + /// + public bool isUpdating { get; set; } + + /// The time the action was updated (Time.realtimeSinceStartup) + public float updateTime { get; protected set; } + + /// The handle to the component that triggered the action to be changed + public abstract ulong activeOrigin { get; } + + /// The handle to the component that triggered the action to be changed in the previous update + public abstract ulong lastActiveOrigin { get; } + + /// Returns true if the action has been changed since the previous update + public abstract bool changed { get; protected set; } + + /// Returns true if the action was changed for the previous update cycle + public abstract bool lastChanged { get; protected set; } + + /// The input source that triggered the action to be updated + public SteamVR_Input_Sources activeDevice { get { UpdateOriginTrackedDeviceInfo(); return SteamVR_Input_Source.GetSource(inputOriginInfo.devicePath); } } + + /// The device index (used by Render Models) used by the device that triggered the action to be updated + public uint trackedDeviceIndex { get { UpdateOriginTrackedDeviceInfo(); return inputOriginInfo.trackedDeviceIndex; } } + + /// The name of the component on the render model that caused the action to be updated (not localized) + public string renderModelComponentName { get { UpdateOriginTrackedDeviceInfo(); return inputOriginInfo.rchRenderModelComponentName; } } + + /// + /// Gets the localized full name of the device that the action was updated by. ex: "Left Hand Vive Controller Trackpad" + /// + public string localizedOriginName { get { UpdateOriginTrackedDeviceInfo(); return GetLocalizedOrigin(); } } + + + /// The Time.realtimeSinceStartup that this action was last changed. + public float changedTime { get; protected set; } + + protected int lastOriginGetFrame { get; set; } + + protected InputOriginInfo_t inputOriginInfo = new InputOriginInfo_t(); + protected InputOriginInfo_t lastInputOriginInfo = new InputOriginInfo_t(); + + /// [Should not be called by user code] Updates the data for this action and this input source + public abstract void UpdateValue(); + + /// + /// [Should not be called by user code] Initializes the handle for the action, the size of the InputOriginInfo struct, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (inputOriginInfo_size == 0) + inputOriginInfo_size = (uint)Marshal.SizeOf(typeof(InputOriginInfo_t)); + } + + protected void UpdateOriginTrackedDeviceInfo() + { + if (lastOriginGetFrame != Time.frameCount) //only get once per frame + { + EVRInputError err = OpenVR.Input.GetOriginTrackedDeviceInfo(activeOrigin, ref inputOriginInfo, inputOriginInfo_size); + + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetOriginTrackedDeviceInfo error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString() + " activeOrigin: " + activeOrigin.ToString() + " active: " + active); + + lastInputOriginInfo = inputOriginInfo; + lastOriginGetFrame = Time.frameCount; + } + } + + /// + /// Gets the localized name of the device that the action corresponds to. Include as many EVRInputStringBits as you want to add to the localized string + /// + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. ex: "Left Hand". + /// VRInputString_ControllerType - What kind of controller the user has in that hand. ex: "Vive Controller". + /// VRInputString_InputSource - What part of that controller is the origin. ex: "Trackpad". + /// VRInputString_All - All of the above. ex: "Left Hand Vive Controller Trackpad". + /// + /// + public string GetLocalizedOriginPart(params EVRInputStringBits[] localizedParts) + { + UpdateOriginTrackedDeviceInfo(); + + if (active) + { + return SteamVR_Input.GetLocalizedName(activeOrigin, localizedParts); + } + + return null; + } + + /// + /// Gets the localized full name of the device that the action was updated by. ex: "Left Hand Vive Controller Trackpad" + /// + public string GetLocalizedOrigin() + { + UpdateOriginTrackedDeviceInfo(); + + if (active) + { + return SteamVR_Input.GetLocalizedName(activeOrigin, EVRInputStringBits.VRInputString_All); + } + + return null; + } + } + + public interface ISteamVR_Action_In : ISteamVR_Action, ISteamVR_Action_In_Source + { + /// + /// [Should not be called by user code] + /// Updates the data for all the input sources the system has detected need to be updated. + /// + void UpdateValues(); + + /// + /// The name of the component on the render model that caused the action to be updated (not localized) + /// + /// The device you would like to get data from. Any if the action is not device specific. + string GetRenderModelComponentName(SteamVR_Input_Sources inputSource); + + /// + /// The input source that triggered the action to be updated last + /// + /// The device you would like to get data from. Any if the action is not device specific. + SteamVR_Input_Sources GetActiveDevice(SteamVR_Input_Sources inputSource); + + /// + /// Gets the device index for the controller this action is bound to. This can be used for render models or the pose tracking system. + /// + /// The device you would like to get data from. Any if the action is not device specific. + uint GetDeviceIndex(SteamVR_Input_Sources inputSource); + + /// + /// Indicates whether or not the data for this action and specified input source has changed since the last update. Determined by SteamVR or 'changeTolerance'. + /// + /// The device you would like to get data from. Any if the action is not device specific. + bool GetChanged(SteamVR_Input_Sources inputSource); + + + /// + /// Gets the localized name of the device that the action corresponds to. Include as many EVRInputStringBits as you want to add to the localized string + /// + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. ex: "Left Hand". + /// VRInputString_ControllerType - What kind of controller the user has in that hand. ex: "Vive Controller". + /// VRInputString_InputSource - What part of that controller is the origin. ex: "Trackpad". + /// VRInputString_All - All of the above. ex: "Left Hand Vive Controller Trackpad". + /// + /// + string GetLocalizedOriginPart(SteamVR_Input_Sources inputSource, params EVRInputStringBits[] localizedParts); + + /// + /// Gets the localized full name of the device that the action was updated by. ex: "Left Hand Vive Controller Trackpad" + /// + /// The device you would like to get data from. Any if the action is not device specific. + string GetLocalizedOrigin(SteamVR_Input_Sources inputSource); + } + + public interface ISteamVR_Action_In_Source : ISteamVR_Action_Source + { + + /// Returns true if the action has been changed in the most recent update + bool changed { get; } + + /// Returns true if the action was changed for the previous update cycle + bool lastChanged { get; } + + /// The Time.realtimeSinceStartup that this action was last changed. + float changedTime { get; } + + /// The time the action was updated (Time.realtimeSinceStartup) + float updateTime { get; } + + /// The handle to the component that triggered the action to be changed + ulong activeOrigin { get; } + + /// The handle to the component that triggered the action to be changed in the previous update + ulong lastActiveOrigin { get; } + + /// The input source that triggered the action to be updated + SteamVR_Input_Sources activeDevice { get; } + + /// The device index (used by Render Models) used by the device that triggered the action to be updated + uint trackedDeviceIndex { get; } + + /// The name of the component on the render model that caused the action to be updated (not localized) + string renderModelComponentName { get; } + + /// Gets the localized full name of the device that the action was updated by. ex: "Left Hand Vive Controller Trackpad" + string localizedOriginName { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs.meta new file mode 100644 index 00000000..35314150 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_In.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a93d780c5506a6047bdaf1009c904c9c +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs new file mode 100644 index 00000000..96c50a92 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs @@ -0,0 +1,30 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + public abstract class SteamVR_Action_Out : SteamVR_Action, ISteamVR_Action_Out + where SourceMap : SteamVR_Action_Source_Map, new() + where SourceElement : SteamVR_Action_Out_Source, new() + { + } + + public abstract class SteamVR_Action_Out_Source : SteamVR_Action_Source, ISteamVR_Action_Out_Source + { + } + + public interface ISteamVR_Action_Out : ISteamVR_Action, ISteamVR_Action_Out_Source + { + } + + public interface ISteamVR_Action_Out_Source : ISteamVR_Action_Source + { + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs.meta new file mode 100644 index 00000000..1a870d2b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Out.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9432398566c5b434685df0ceda0c736f +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs new file mode 100644 index 00000000..e7fc9383 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs @@ -0,0 +1,779 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// Pose actions represent a position, rotation, and velocities inside the tracked space. + /// SteamVR keeps a log of past poses so you can retrieve old poses with GetPoseAtTimeOffset or GetVelocitiesAtTimeOffset. + /// You can also pass in times in the future to these methods for SteamVR's best prediction of where the pose will be at that time. + /// + public class SteamVR_Action_Pose : SteamVR_Action_Pose_Base, SteamVR_Action_Pose_Source>, ISerializationCallbackReceiver + { + public delegate void ActiveChangeHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource); + public delegate void UpdateHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource); + public delegate void TrackingChangeHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource, ETrackingResult trackingState); + public delegate void ValidPoseChangeHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource, bool validPose); + public delegate void DeviceConnectedChangeHandler(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource, bool deviceConnected); + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the orientation of the pose changes more than the changeTolerance + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the state of the tracking has changed + public event TrackingChangeHandler onTrackingChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the validity of the pose has changed + public event ValidPoseChangeHandler onValidPoseChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the device bound to this pose is connected or disconnected + public event DeviceConnectedChangeHandler onDeviceConnectedChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged -= value; } } + + /// Fires an event when a device is connected or disconnected. + /// The device you would like to add an event to. Any if the action is not device specific. + /// The method you would like to be called when a device is connected. Should take a SteamVR_Action_Pose as a param + public void AddOnDeviceConnectedChanged(SteamVR_Input_Sources inputSource, DeviceConnectedChangeHandler functionToCall) + { + sourceMap[inputSource].onDeviceConnectedChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The device you would like to remove an event from. Any if the action is not device specific. + /// The method you would like to stop calling when a device is connected. Should take a SteamVR_Action_Pose as a param + public void RemoveOnDeviceConnectedChanged(SteamVR_Input_Sources inputSource, DeviceConnectedChangeHandler functionToStopCalling) + { + sourceMap[inputSource].onDeviceConnectedChanged -= functionToStopCalling; + } + + + /// Fires an event when the tracking of the device has changed + /// The device you would like to add an event to. Any if the action is not device specific. + /// The method you would like to be called when tracking has changed. Should take a SteamVR_Action_Pose as a param + public void AddOnTrackingChanged(SteamVR_Input_Sources inputSource, TrackingChangeHandler functionToCall) + { + sourceMap[inputSource].onTrackingChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The device you would like to remove an event from. Any if the action is not device specific. + /// The method you would like to stop calling when tracking has changed. Should take a SteamVR_Action_Pose as a param + public void RemoveOnTrackingChanged(SteamVR_Input_Sources inputSource, TrackingChangeHandler functionToStopCalling) + { + sourceMap[inputSource].onTrackingChanged -= functionToStopCalling; + } + + + /// Fires an event when the device now has a valid pose or no longer has a valid pose + /// The device you would like to add an event to. Any if the action is not device specific. + /// The method you would like to be called when the pose has become valid or invalid. Should take a SteamVR_Action_Pose as a param + public void AddOnValidPoseChanged(SteamVR_Input_Sources inputSource, ValidPoseChangeHandler functionToCall) + { + sourceMap[inputSource].onValidPoseChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The device you would like to remove an event from. Any if the action is not device specific. + /// The method you would like to stop calling when the pose has become valid or invalid. Should take a SteamVR_Action_Pose as a param + public void RemoveOnValidPoseChanged(SteamVR_Input_Sources inputSource, ValidPoseChangeHandler functionToStopCalling) + { + sourceMap[inputSource].onValidPoseChanged -= functionToStopCalling; + } + + + /// Executes a function when this action's bound state changes + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(SteamVR_Input_Sources inputSource, ActiveChangeHandler functionToCall) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(SteamVR_Input_Sources inputSource, ActiveChangeHandler functionToStopCalling) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) changes + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnChangeListener(SteamVR_Input_Sources inputSource, ChangeHandler functionToCall) + { + sourceMap[inputSource].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnChangeListener(SteamVR_Input_Sources inputSource, ChangeHandler functionToStopCalling) + { + sourceMap[inputSource].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnUpdateListener(SteamVR_Input_Sources inputSource, UpdateHandler functionToCall) + { + sourceMap[inputSource].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnUpdateListener(SteamVR_Input_Sources inputSource, UpdateHandler functionToStopCalling) + { + sourceMap[inputSource].onUpdate -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() { } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + + /// + /// Sets all pose and skeleton actions to use the specified universe origin. + /// + public static void SetTrackingUniverseOrigin(ETrackingUniverseOrigin newOrigin) + { + SetUniverseOrigin(newOrigin); + OpenVR.Compositor.SetTrackingSpace(newOrigin); + } + } + + [Serializable] + /// + /// The base pose action (pose and skeleton inherit from this) + /// + public abstract class SteamVR_Action_Pose_Base : SteamVR_Action_In, ISteamVR_Action_Pose + where SourceMap : SteamVR_Action_Pose_Source_Map, new() + where SourceElement : SteamVR_Action_Pose_Source, new() + { + /// + /// Sets all pose (and skeleton) actions to use the specified universe origin. + /// + protected static void SetUniverseOrigin(ETrackingUniverseOrigin newOrigin) + { + for (int actionIndex = 0; actionIndex < SteamVR_Input.actionsPose.Length; actionIndex++) + { + SteamVR_Input.actionsPose[actionIndex].sourceMap.SetTrackingUniverseOrigin(newOrigin); + } + + for (int actionIndex = 0; actionIndex < SteamVR_Input.actionsSkeleton.Length; actionIndex++) + { + SteamVR_Input.actionsSkeleton[actionIndex].sourceMap.SetTrackingUniverseOrigin(newOrigin); + } + } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local position of this action relative to the universe origin + public Vector3 localPosition { get { return sourceMap[SteamVR_Input_Sources.Any].localPosition; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local rotation of this action relative to the universe origin + public Quaternion localRotation { get { return sourceMap[SteamVR_Input_Sources.Any].localRotation; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The state of the tracking system that is used to create pose data (position, rotation, etc) + public ETrackingResult trackingState { get { return sourceMap[SteamVR_Input_Sources.Any].trackingState; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local velocity of this pose relative to the universe origin + public Vector3 velocity { get { return sourceMap[SteamVR_Input_Sources.Any].velocity; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local angular velocity of this pose relative to the universe origin + public Vector3 angularVelocity { get { return sourceMap[SteamVR_Input_Sources.Any].angularVelocity; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True if the pose retrieved for this action and input source is valid (good data from the tracking source) + public bool poseIsValid { get { return sourceMap[SteamVR_Input_Sources.Any].poseIsValid; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True if the device bound to this action and input source is connected + public bool deviceIsConnected { get { return sourceMap[SteamVR_Input_Sources.Any].deviceIsConnected; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local position for this pose during the previous update + public Vector3 lastLocalPosition { get { return sourceMap[SteamVR_Input_Sources.Any].lastLocalPosition; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The local rotation for this pose during the previous update + public Quaternion lastLocalRotation { get { return sourceMap[SteamVR_Input_Sources.Any].lastLocalRotation; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The tracking state for this pose during the previous update + public ETrackingResult lastTrackingState { get { return sourceMap[SteamVR_Input_Sources.Any].lastTrackingState; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The velocity for this pose during the previous update + public Vector3 lastVelocity { get { return sourceMap[SteamVR_Input_Sources.Any].lastVelocity; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The angular velocity for this pose during the previous update + public Vector3 lastAngularVelocity { get { return sourceMap[SteamVR_Input_Sources.Any].lastAngularVelocity; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True if the pose was valid during the previous update + public bool lastPoseIsValid { get { return sourceMap[SteamVR_Input_Sources.Any].lastPoseIsValid; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] True if the device bound to this action was connected during the previous update + public bool lastDeviceIsConnected { get { return sourceMap[SteamVR_Input_Sources.Any].lastDeviceIsConnected; } } + + + public SteamVR_Action_Pose_Base() { } + + /// + /// [Should not be called by user code] + /// Updates the data for all the input sources the system has detected need to be updated. + /// + public virtual void UpdateValues(bool skipStateAndEventUpdates) + { + sourceMap.UpdateValues(skipStateAndEventUpdates); + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The device you would like to get data from. Any if the action is not device specific. + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if the call succeeded + public bool GetVelocitiesAtTimeOffset(SteamVR_Input_Sources inputSource, float secondsFromNow, out Vector3 velocity, out Vector3 angularVelocity) + { + return sourceMap[inputSource].GetVelocitiesAtTimeOffset(secondsFromNow, out velocity, out angularVelocity); + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The device you would like to get data from. Any if the action is not device specific. + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if the call succeeded + public bool GetPoseAtTimeOffset(SteamVR_Input_Sources inputSource, float secondsFromNow, out Vector3 localPosition, out Quaternion localRotation, out Vector3 velocity, out Vector3 angularVelocity) + { + return sourceMap[inputSource].GetPoseAtTimeOffset(secondsFromNow, out localPosition, out localRotation, out velocity, out angularVelocity); + } + + /// + /// Update a transform's local position and local roation to match the pose from the most recent update + /// + /// The device you would like to get data from. Any if the action is not device specific. + /// The transform of the object to be updated + public virtual void UpdateTransform(SteamVR_Input_Sources inputSource, Transform transformToUpdate) + { + sourceMap[inputSource].UpdateTransform(transformToUpdate); + } + + /// The local position of this action relative to the universe origin + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLocalPosition(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].localPosition; + } + + /// The local rotation of this action relative to the universe origin + /// The device you would like to get data from. Any if the action is not device specific. + public Quaternion GetLocalRotation(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].localRotation; + } + + /// The local velocity of this pose relative to the universe origin + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetVelocity(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].velocity; + } + + /// The local angular velocity of this pose relative to the universe origin + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetAngularVelocity(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].angularVelocity; + } + + /// True if the device bound to this action and input source is connected + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetDeviceIsConnected(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].deviceIsConnected; + } + + /// True if the pose retrieved for this action and input source is valid (good data from the tracking source) + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetPoseIsValid(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].poseIsValid; + } + + /// The state of the tracking system that is used to create pose data (position, rotation, etc) + /// The device you would like to get data from. Any if the action is not device specific. + public ETrackingResult GetTrackingResult(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].trackingState; + } + + + + /// The local position for this pose during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLastLocalPosition(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastLocalPosition; + } + + /// The local rotation for this pose during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public Quaternion GetLastLocalRotation(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastLocalRotation; + } + + /// The velocity for this pose during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLastVelocity(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastVelocity; + } + + /// The angular velocity for this pose during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLastAngularVelocity(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastAngularVelocity; + } + + /// True if the device bound to this action was connected during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetLastDeviceIsConnected(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastDeviceIsConnected; + } + + /// True if the pose was valid during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public bool GetLastPoseIsValid(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastPoseIsValid; + } + + /// The tracking state for this pose during the previous update + /// The device you would like to get data from. Any if the action is not device specific. + public ETrackingResult GetLastTrackingResult(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastTrackingState; + } + } + + /// + /// Boolean actions are either true or false. There is an onStateUp and onStateDown event for the rising and falling edge. + /// + public class SteamVR_Action_Pose_Source_Map : SteamVR_Action_In_Source_Map + where Source : SteamVR_Action_Pose_Source, new() + { + /// + /// Sets all pose (and skeleton) actions to use the specified universe origin without going through the sourcemap indexer + /// + public void SetTrackingUniverseOrigin(ETrackingUniverseOrigin newOrigin) + { + for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++) + { + if (sources[sourceIndex] != null) + sources[sourceIndex].universeOrigin = newOrigin; + } + } + + public virtual void UpdateValues(bool skipStateAndEventUpdates) + { + for (int sourceIndex = 0; sourceIndex < updatingSources.Count; sourceIndex++) + { + sources[updatingSources[sourceIndex]].UpdateValue(skipStateAndEventUpdates); + } + } + } + + public class SteamVR_Action_Pose_Source : SteamVR_Action_In_Source, ISteamVR_Action_Pose + { + public ETrackingUniverseOrigin universeOrigin = ETrackingUniverseOrigin.TrackingUniverseRawAndUncalibrated; + + protected static uint poseActionData_size = 0; + + /// The distance the pose needs to move/rotate before a change is detected + public float changeTolerance = Mathf.Epsilon; + + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Pose.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Pose.ActiveChangeHandler onActiveBindingChange; + + /// Event fires when the orientation of the pose changes more than the changeTolerance + public event SteamVR_Action_Pose.ChangeHandler onChange; + + /// Event fires when the action is updated + public event SteamVR_Action_Pose.UpdateHandler onUpdate; + + /// Event fires when the state of the tracking system that is used to create pose data (position, rotation, etc) changes + public event SteamVR_Action_Pose.TrackingChangeHandler onTrackingChanged; + + /// Event fires when the state of the pose data retrieved for this action changes validity (good/bad data from the tracking source) + public event SteamVR_Action_Pose.ValidPoseChangeHandler onValidPoseChanged; + + /// Event fires when the device bound to this action is connected or disconnected + public event SteamVR_Action_Pose.DeviceConnectedChangeHandler onDeviceConnectedChanged; + + + + /// True when the orientation of the pose has changhed more than changeTolerance in the last update. Note: Will only return true if the action is also active. + public override bool changed { get; protected set; } + + /// The value of the action's 'changed' during the previous update + public override bool lastChanged { get; protected set; } + + /// The handle to the origin of the component that was used to update this pose + public override ulong activeOrigin + { + get + { + if (active) + return poseActionData.activeOrigin; + + return 0; + } + } + + /// The handle to the origin of the component that was used to update the value for this action (for the previous update) + public override ulong lastActiveOrigin { get { return lastPoseActionData.activeOrigin; } } + + /// True if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } } + + /// True if the action is bound + public override bool activeBinding { get { return poseActionData.bActive; } } + + + /// If the action was active (ActionSet active and binding active) during the last update + public override bool lastActive { get; protected set; } + + /// If the action's binding was active during the previous update + public override bool lastActiveBinding { get { return lastPoseActionData.bActive; } } + + /// The state of the tracking system that is used to create pose data (position, rotation, etc) + public ETrackingResult trackingState { get { return poseActionData.pose.eTrackingResult; } } + + /// The tracking state for this pose during the previous update + public ETrackingResult lastTrackingState { get { return lastPoseActionData.pose.eTrackingResult; } } + + /// True if the pose retrieved for this action and input source is valid (good data from the tracking source) + public bool poseIsValid { get { return poseActionData.pose.bPoseIsValid; } } + + /// True if the pose was valid during the previous update + public bool lastPoseIsValid { get { return lastPoseActionData.pose.bPoseIsValid; } } + + /// True if the device bound to this action and input source is connected + public bool deviceIsConnected { get { return poseActionData.pose.bDeviceIsConnected; } } + + /// True if the device bound to this action was connected during the previous update + public bool lastDeviceIsConnected { get { return lastPoseActionData.pose.bDeviceIsConnected; } } + + + /// The local position of this action relative to the universe origin + public Vector3 localPosition { get; protected set; } + + /// The local rotation of this action relative to the universe origin + public Quaternion localRotation { get; protected set; } + + /// The local position for this pose during the previous update + public Vector3 lastLocalPosition { get; protected set; } + + /// The local rotation for this pose during the previous update + public Quaternion lastLocalRotation { get; protected set; } + + /// The local velocity of this pose relative to the universe origin + public Vector3 velocity { get; protected set; } + + /// The velocity for this pose during the previous update + public Vector3 lastVelocity { get; protected set; } + + /// The local angular velocity of this pose relative to the universe origin + public Vector3 angularVelocity { get; protected set; } + + /// The angular velocity for this pose during the previous update + public Vector3 lastAngularVelocity { get; protected set; } + + + protected InputPoseActionData_t poseActionData = new InputPoseActionData_t(); + + protected InputPoseActionData_t lastPoseActionData = new InputPoseActionData_t(); + + protected InputPoseActionData_t tempPoseActionData = new InputPoseActionData_t(); + + + protected SteamVR_Action_Pose poseAction; + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + poseAction = wrappingAction as SteamVR_Action_Pose; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the pose action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (poseActionData_size == 0) + poseActionData_size = (uint)Marshal.SizeOf(typeof(InputPoseActionData_t)); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + UpdateValue(false); + } + + public static float framesAhead = 2; + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public virtual void UpdateValue(bool skipStateAndEventUpdates) + { + lastChanged = changed; + lastPoseActionData = poseActionData; + lastLocalPosition = localPosition; + lastLocalRotation = localRotation; + lastVelocity = velocity; + lastAngularVelocity = angularVelocity; + + EVRInputError err; + + if (framesAhead == 0) + err = OpenVR.Input.GetPoseActionDataForNextFrame(handle, universeOrigin, ref poseActionData, poseActionData_size, inputSourceHandle); + else + err = OpenVR.Input.GetPoseActionDataRelativeToNow(handle, universeOrigin, framesAhead * (Time.timeScale / SteamVR.instance.hmd_DisplayFrequency), ref poseActionData, poseActionData_size, inputSourceHandle); + + if (err != EVRInputError.None) + { + Debug.LogError("[SteamVR] GetPoseActionData error (" + fullPath + "): " + err.ToString() + " Handle: " + handle.ToString() + ". Input source: " + inputSource.ToString()); + } + + if (active) + { + SetCacheVariables(); + changed = GetChanged(); + } + + if (changed) + changedTime = updateTime; + + if (skipStateAndEventUpdates == false) + CheckAndSendEvents(); + } + + protected void SetCacheVariables() + { + localPosition = poseActionData.pose.mDeviceToAbsoluteTracking.GetPosition(); + localRotation = poseActionData.pose.mDeviceToAbsoluteTracking.GetRotation(); + velocity = GetUnityCoordinateVelocity(poseActionData.pose.vVelocity); + angularVelocity = GetUnityCoordinateAngularVelocity(poseActionData.pose.vAngularVelocity); + updateTime = Time.realtimeSinceStartup; + } + + protected bool GetChanged() + { + if (Vector3.Distance(localPosition, lastLocalPosition) > changeTolerance) + return true; + else if (Mathf.Abs(Quaternion.Angle(localRotation, lastLocalRotation)) > changeTolerance) + return true; + else if (Vector3.Distance(velocity, lastVelocity) > changeTolerance) + return true; + else if (Vector3.Distance(angularVelocity, lastAngularVelocity) > changeTolerance) + return true; + + return false; + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if we successfully returned a pose + public bool GetVelocitiesAtTimeOffset(float secondsFromNow, out Vector3 velocityAtTime, out Vector3 angularVelocityAtTime) + { + EVRInputError err = OpenVR.Input.GetPoseActionDataRelativeToNow(handle, universeOrigin, secondsFromNow, ref tempPoseActionData, poseActionData_size, inputSourceHandle); + if (err != EVRInputError.None) + { + Debug.LogError("[SteamVR] GetPoseActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString()); //todo: this should be an error + + velocityAtTime = Vector3.zero; + angularVelocityAtTime = Vector3.zero; + return false; + } + + velocityAtTime = GetUnityCoordinateVelocity(tempPoseActionData.pose.vVelocity); + angularVelocityAtTime = GetUnityCoordinateAngularVelocity(tempPoseActionData.pose.vAngularVelocity); + + return true; + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if we successfully returned a pose + public bool GetPoseAtTimeOffset(float secondsFromNow, out Vector3 positionAtTime, out Quaternion rotationAtTime, out Vector3 velocityAtTime, out Vector3 angularVelocityAtTime) + { + EVRInputError err = OpenVR.Input.GetPoseActionDataRelativeToNow(handle, universeOrigin, secondsFromNow, ref tempPoseActionData, poseActionData_size, inputSourceHandle); + if (err != EVRInputError.None) + { + Debug.LogError("[SteamVR] GetPoseActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString()); //todo: this should be an error + + velocityAtTime = Vector3.zero; + angularVelocityAtTime = Vector3.zero; + positionAtTime = Vector3.zero; + rotationAtTime = Quaternion.identity; + return false; + } + + velocityAtTime = GetUnityCoordinateVelocity(tempPoseActionData.pose.vVelocity); + angularVelocityAtTime = GetUnityCoordinateAngularVelocity(tempPoseActionData.pose.vAngularVelocity); + positionAtTime = tempPoseActionData.pose.mDeviceToAbsoluteTracking.GetPosition(); + rotationAtTime = tempPoseActionData.pose.mDeviceToAbsoluteTracking.GetRotation(); + + return true; + } + + /// + /// Update a transform's local position and local roation to match the pose. + /// + /// The transform of the object to be updated + public void UpdateTransform(Transform transformToUpdate) + { + transformToUpdate.localPosition = localPosition; + transformToUpdate.localRotation = localRotation; + } + + protected virtual void CheckAndSendEvents() + { + if (trackingState != lastTrackingState && onTrackingChanged != null) + onTrackingChanged.Invoke(poseAction, inputSource, trackingState); + + if (poseIsValid != lastPoseIsValid && onValidPoseChanged != null) + onValidPoseChanged.Invoke(poseAction, inputSource, poseIsValid); + + if (deviceIsConnected != lastDeviceIsConnected && onDeviceConnectedChanged != null) + onDeviceConnectedChanged.Invoke(poseAction, inputSource, deviceIsConnected); + + if (changed && onChange != null) + onChange.Invoke(poseAction, inputSource); + + if (active != lastActive && onActiveChange != null) + onActiveChange.Invoke(poseAction, inputSource, active); + + if (activeBinding != lastActiveBinding && onActiveBindingChange != null) + onActiveBindingChange.Invoke(poseAction, inputSource, activeBinding); + + if (onUpdate != null) + onUpdate.Invoke(poseAction, inputSource); + } + + protected Vector3 GetUnityCoordinateVelocity(HmdVector3_t vector) + { + return GetUnityCoordinateVelocity(vector.v0, vector.v1, vector.v2); + } + + protected Vector3 GetUnityCoordinateAngularVelocity(HmdVector3_t vector) + { + return GetUnityCoordinateAngularVelocity(vector.v0, vector.v1, vector.v2); + } + + protected Vector3 GetUnityCoordinateVelocity(float x, float y, float z) + { + Vector3 vector = new Vector3(); + vector.x = x; + vector.y = y; + vector.z = -z; + return vector; + } + + protected Vector3 GetUnityCoordinateAngularVelocity(float x, float y, float z) + { + Vector3 vector = new Vector3(); + vector.x = -x; + vector.y = -y; + vector.z = z; + return vector; + } + } + + /// + /// Boolean actions are either true or false. There is an onStateUp and onStateDown event for the rising and falling edge. + /// + public interface ISteamVR_Action_Pose : ISteamVR_Action_In_Source + { + /// The local position of this action relative to the universe origin + Vector3 localPosition { get; } + + /// The local rotation of this action relative to the universe origin + Quaternion localRotation { get; } + + /// The state of the tracking system that is used to create pose data (position, rotation, etc) + ETrackingResult trackingState { get; } + + /// The local velocity of this pose relative to the universe origin + Vector3 velocity { get; } + + /// The local angular velocity of this pose relative to the universe origin + Vector3 angularVelocity { get; } + + /// True if the pose retrieved for this action and input source is valid (good data from the tracking source) + bool poseIsValid { get; } + + /// True if the device bound to this action and input source is connected + bool deviceIsConnected { get; } + + + /// The local position for this pose during the previous update + Vector3 lastLocalPosition { get; } + + /// The local rotation for this pose during the previous update + Quaternion lastLocalRotation { get; } + + /// The tracking state for this pose during the previous update + ETrackingResult lastTrackingState { get; } + + /// The velocity for this pose during the previous update + Vector3 lastVelocity { get; } + + /// The angular velocity for this pose during the previous update + Vector3 lastAngularVelocity { get; } + + /// True if the pose was valid during the previous update + bool lastPoseIsValid { get; } + + /// True if the device bound to this action was connected during the previous update + bool lastDeviceIsConnected { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs.meta new file mode 100644 index 00000000..43502a1e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Pose.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 640f5aa82bb9c714696f842cb8727241 +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs new file mode 100644 index 00000000..85c49437 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs @@ -0,0 +1,353 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Valve.VR +{ + [Serializable] + /// + /// An analog action with a value generally from 0 to 1. Also provides a delta since the last update. + /// + public class SteamVR_Action_Single : SteamVR_Action_In, ISteamVR_Action_Single, ISerializationCallbackReceiver + { + public delegate void AxisHandler(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + public delegate void ActiveChangeHandler(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + public delegate void UpdateHandler(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the axis changes by more than the specified changeTolerance + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event will fire whenever the float value of the action is non-zero + public event AxisHandler onAxis + { add { sourceMap[SteamVR_Input_Sources.Any].onAxis += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onAxis -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires when the active state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + + /// [Shortcut to: SteamVR_Input_Sources.Any] The current float value of the action. + /// Note: Will only return non-zero if the action is also active. + public float axis { get { return sourceMap[SteamVR_Input_Sources.Any].axis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The float value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public float lastAxis { get { return sourceMap[SteamVR_Input_Sources.Any].lastAxis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The float value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public float delta { get { return sourceMap[SteamVR_Input_Sources.Any].delta; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The float value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public float lastDelta { get { return sourceMap[SteamVR_Input_Sources.Any].lastDelta; } } + + + public SteamVR_Action_Single() { } + + /// The current float value of the action + /// The device you would like to get data from. Any if the action is not device specific. + public float GetAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].axis; + } + + /// The float value difference between this update and the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public float GetAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].delta; + } + + /// The float value of the action from the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public float GetLastAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastAxis; + } + + /// The float value difference between the previous update and update before that. + /// The device you would like to get data from. Any if the action is not device specific. + public float GetLastAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastDelta; + } + + /// Executes a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the active state of this action (with the specified inputSource) changes. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling; + } + + /// Executes a function when the axis changes by more than the specified changeTolerance + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnChangeListener(ChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnChangeListener(ChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnUpdateListener(UpdateHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate -= functionToStopCalling; + } + + /// Executes a function when the float value of the action is non-zero. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnAxisListener(AxisHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnAxisListener(AxisHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + } + + public class SteamVR_Action_Single_Source_Map : SteamVR_Action_In_Source_Map + { + } + + public class SteamVR_Action_Single_Source : SteamVR_Action_In_Source, ISteamVR_Action_Single + { + protected static uint actionData_size = 0; + + /// The amount the axis needs to change before a change is detected + public float changeTolerance = Mathf.Epsilon; + + /// Event fires when the value of the action is non-zero + public event SteamVR_Action_Single.AxisHandler onAxis; + + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Single.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Single.ActiveChangeHandler onActiveBindingChange; + + /// This event fires whenever the axis changes by more than the specified changeTolerance + public event SteamVR_Action_Single.ChangeHandler onChange; + + /// Event fires when the action is updated + public event SteamVR_Action_Single.UpdateHandler onUpdate; + + /// The current float value of the action. + /// Note: Will only return non-zero if the action is also active. + public float axis { get { if (active) return actionData.x; else return 0; } } + + /// The float value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public float lastAxis { get { if (active) return lastActionData.x; else return 0; } } + + /// The float value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public float delta { get { if (active) return actionData.deltaX; else return 0; } } + + /// The float value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public float lastDelta { get { if (active) return lastActionData.deltaX; else return 0; } } + + + /// If the float value of this action has changed more than the changeTolerance since the last update + public override bool changed { get; protected set; } + + + /// If the float value of this action has changed more than the changeTolerance between the previous update and the update before that + public override bool lastChanged { get; protected set; } + + /// The handle to the origin of the component that was used to update the value for this action + public override ulong activeOrigin + { + get + { + if (active) + return actionData.activeOrigin; + + return 0; + } + } + + /// The handle to the origin of the component that was used to update the value for this action (for the previous update) + public override ulong lastActiveOrigin { get { return lastActionData.activeOrigin; } } + + /// Returns true if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } } + + /// Returns true if the action is bound + public override bool activeBinding { get { return actionData.bActive; } } + + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public override bool lastActiveBinding { get { return lastActionData.bActive; } } + + + protected InputAnalogActionData_t actionData = new InputAnalogActionData_t(); + protected InputAnalogActionData_t lastActionData = new InputAnalogActionData_t(); + + protected SteamVR_Action_Single singleAction; + + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + singleAction = (SteamVR_Action_Single)wrappingAction; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (actionData_size == 0) + actionData_size = (uint)Marshal.SizeOf(typeof(InputAnalogActionData_t)); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + lastActionData = actionData; + lastActive = active; + + EVRInputError err = OpenVR.Input.GetAnalogActionData(handle, ref actionData, actionData_size, SteamVR_Input_Source.GetHandle(inputSource)); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetAnalogActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString()); + + updateTime = Time.realtimeSinceStartup; + + changed = false; + + if (active) + { + if (delta > changeTolerance || delta < -changeTolerance) + { + changed = true; + changedTime = Time.realtimeSinceStartup + actionData.fUpdateTime; //fUpdateTime is the time from the time the action was called that the action changed + + if (onChange != null) + onChange.Invoke(singleAction, inputSource, axis, delta); + } + + if (axis != 0) + { + if (onAxis != null) + onAxis.Invoke(singleAction, inputSource, axis, delta); + } + + if (onUpdate != null) + { + onUpdate.Invoke(singleAction, inputSource, axis, delta); + } + } + + + if (onActiveBindingChange != null && lastActiveBinding != activeBinding) + onActiveBindingChange.Invoke(singleAction, inputSource, activeBinding); + + if (onActiveChange != null && lastActive != active) + onActiveChange.Invoke(singleAction, inputSource, activeBinding); + } + } + + public interface ISteamVR_Action_Single : ISteamVR_Action_In_Source + { + /// The current float value of the action. + /// Note: Will only return non-zero if the action is also active. + float axis { get; } + + /// The float value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + float lastAxis { get; } + + + /// The float value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + float delta { get; } + + /// The float value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + float lastDelta { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs.meta new file mode 100644 index 00000000..b1923406 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Single.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02b1c930c612dbc469d258783cb8be34 +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs new file mode 100644 index 00000000..c02160f6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs @@ -0,0 +1,1459 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; + +using System.Runtime.InteropServices; +using System.Collections.Generic; +using System.Text; + +namespace Valve.VR +{ + [Serializable] + /// + /// Skeleton Actions are our best approximation of where your hands are while holding vr controllers and pressing buttons. We give you 31 bones to help you animate hand models. + /// For more information check out this blog post: https://steamcommunity.com/games/250820/announcements/detail/1690421280625220068 + /// + public class SteamVR_Action_Skeleton : SteamVR_Action_Pose_Base, ISteamVR_Action_Skeleton_Source, ISerializationCallbackReceiver + { + public const int numBones = 31; + + public delegate void ActiveChangeHandler(SteamVR_Action_Skeleton fromAction, bool active); + public delegate void ChangeHandler(SteamVR_Action_Skeleton fromAction); + public delegate void UpdateHandler(SteamVR_Action_Skeleton fromAction); + public delegate void TrackingChangeHandler(SteamVR_Action_Skeleton fromAction, ETrackingResult trackingState); + public delegate void ValidPoseChangeHandler(SteamVR_Action_Skeleton fromAction, bool validPose); + public delegate void DeviceConnectedChangeHandler(SteamVR_Action_Skeleton fromAction, bool deviceConnected); + + /// Event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// Event fires when the active state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + /// Event fires when the state of the pose or bones moves more than the changeTolerance + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// Event fires when the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// Event fires when the state of the tracking system that is used to create pose data (position, rotation, etc) changes + public event TrackingChangeHandler onTrackingChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged -= value; } } + + /// Event fires when the state of the pose data retrieved for this action changes validity (good/bad data from the tracking source) + public event ValidPoseChangeHandler onValidPoseChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged -= value; } } + + /// Event fires when the device bound to this action is connected or disconnected + public event DeviceConnectedChangeHandler onDeviceConnectedChanged + { add { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged -= value; } } + + public SteamVR_Action_Skeleton() { } + + /// + /// [Should not be called by user code] + /// Updates the skeleton action data + /// + public virtual void UpdateValue(bool skipStateAndEventUpdates) + { + sourceMap[SteamVR_Input_Sources.Any].UpdateValue(skipStateAndEventUpdates); + } + + /// + /// [Should not be called by user code] + /// Updates the skeleton action data without firing events + /// + public void UpdateValueWithoutEvents() + { + sourceMap[SteamVR_Input_Sources.Any].UpdateValue(true); + } + + /// + /// Update a transform's local position and local roation to match the pose from the most recent update + /// + /// The transform of the object to be updated + public void UpdateTransform(Transform transformToUpdate) + { + base.UpdateTransform(SteamVR_Input_Sources.Any, transformToUpdate); + } + + #region skeleton source properties + /// An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Vector3[] bonePositions { get { return sourceMap[SteamVR_Input_Sources.Any].bonePositions; } } + + /// An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Quaternion[] boneRotations { get { return sourceMap[SteamVR_Input_Sources.Any].boneRotations; } } + + /// From the previous update: An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Vector3[] lastBonePositions { get { return sourceMap[SteamVR_Input_Sources.Any].lastBonePositions; } } + + /// From the previous update: An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Quaternion[] lastBoneRotations { get { return sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations; } } + + /// The range of motion the we're using to get bone data from. With Controller being your hand while holding the controller. + public EVRSkeletalMotionRange rangeOfMotion + { + get { return sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion; } + set { sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion = value; } + } + + /// The space to get bone data in. Parent space by default + public EVRSkeletalTransformSpace skeletalTransformSpace + { + get { return sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace; } + set { sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace = value; } + } + + /// The type of summary data that will be retrieved by default. FromAnimation is smoothed data to based on the skeletal animation system. FromDevice is as recent from the device as we can get - may be different data from smoothed. + public EVRSummaryType summaryDataType + { + get { return sourceMap[SteamVR_Input_Sources.Any].summaryDataType; } + set { sourceMap[SteamVR_Input_Sources.Any].summaryDataType = value; } + } + + /// + /// Get the accuracy level of the skeletal tracking data. + /// * Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// * Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// * Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + public EVRSkeletalTrackingLevel skeletalTrackingLevel + { + get { return sourceMap[SteamVR_Input_Sources.Any].skeletalTrackingLevel; } + } + + /// A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + public float thumbCurl { get { return sourceMap[SteamVR_Input_Sources.Any].thumbCurl; } } + + /// A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + public float indexCurl { get { return sourceMap[SteamVR_Input_Sources.Any].indexCurl; } } + + /// A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + public float middleCurl { get { return sourceMap[SteamVR_Input_Sources.Any].middleCurl; } } + + /// A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + public float ringCurl { get { return sourceMap[SteamVR_Input_Sources.Any].ringCurl; } } + + /// A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + public float pinkyCurl { get { return sourceMap[SteamVR_Input_Sources.Any].pinkyCurl; } } + + /// A 0-1 value representing the size of the gap between the thumb and index fingers + public float thumbIndexSplay { get { return sourceMap[SteamVR_Input_Sources.Any].thumbIndexSplay; } } + + /// A 0-1 value representing the size of the gap between the index and middle fingers + public float indexMiddleSplay { get { return sourceMap[SteamVR_Input_Sources.Any].indexMiddleSplay; } } + + /// A 0-1 value representing the size of the gap between the middle and ring fingers + public float middleRingSplay { get { return sourceMap[SteamVR_Input_Sources.Any].middleRingSplay; } } + + /// A 0-1 value representing the size of the gap between the ring and pinky fingers + public float ringPinkySplay { get { return sourceMap[SteamVR_Input_Sources.Any].ringPinkySplay; } } + + + /// [Previous Update] A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + public float lastThumbCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastThumbCurl; } } + + /// [Previous Update] A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + public float lastIndexCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastIndexCurl; } } + + /// [Previous Update] A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + public float lastMiddleCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastMiddleCurl; } } + + /// [Previous Update] A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + public float lastRingCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastRingCurl; } } + + /// [Previous Update] A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + public float lastPinkyCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastPinkyCurl; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the thumb and index fingers + public float lastThumbIndexSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastThumbIndexSplay; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the index and middle fingers + public float lastIndexMiddleSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastIndexMiddleSplay; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the middle and ring fingers + public float lastMiddleRingSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastMiddleRingSplay; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the ring and pinky fingers + public float lastRingPinkySplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastRingPinkySplay; } } + + /// 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] fingerCurls { get { return sourceMap[SteamVR_Input_Sources.Any].fingerCurls; } } + + /// 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] fingerSplays { get { return sourceMap[SteamVR_Input_Sources.Any].fingerSplays; } } + + /// [Previous Update] 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] lastFingerCurls { get { return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls; } } + + /// [Previous Update] 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] lastFingerSplays { get { return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays; } } + + /// Separate from "changed". If the pose for this skeleton action has changed (root position/rotation) + public bool poseChanged { get { return sourceMap[SteamVR_Input_Sources.Any].poseChanged; } } + + /// Skips processing the full per bone data and only does the summary data + public bool onlyUpdateSummaryData { get { return sourceMap[SteamVR_Input_Sources.Any].onlyUpdateSummaryData; } set { sourceMap[SteamVR_Input_Sources.Any].onlyUpdateSummaryData = value; } } + #endregion + + #region pose functions with SteamVR_Input_Sources.Any + + /// True if this action is bound and the ActionSet is active + public bool GetActive() + { + return sourceMap[SteamVR_Input_Sources.Any].active; + } + + /// True if the ActionSet that contains this action is active + public bool GetSetActive() + { + return actionSet.IsActive(SteamVR_Input_Sources.Any); + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if we successfully returned a pose + public bool GetVelocitiesAtTimeOffset(float secondsFromNow, out Vector3 velocity, out Vector3 angularVelocity) + { + return sourceMap[SteamVR_Input_Sources.Any].GetVelocitiesAtTimeOffset(secondsFromNow, out velocity, out angularVelocity); + } + + /// + /// SteamVR keeps a log of past poses so you can retrieve old poses or estimated poses in the future by passing in a secondsFromNow value that is negative or positive. + /// + /// The time offset in the future (estimated) or in the past (previously recorded) you want to get data from + /// true if we successfully returned a pose + public bool GetPoseAtTimeOffset(float secondsFromNow, out Vector3 position, out Quaternion rotation, out Vector3 velocity, out Vector3 angularVelocity) + { + return sourceMap[SteamVR_Input_Sources.Any].GetPoseAtTimeOffset(secondsFromNow, out position, out rotation, out velocity, out angularVelocity); + } + + /// The local position of the pose relative to the universe origin + public Vector3 GetLocalPosition() + { + return sourceMap[SteamVR_Input_Sources.Any].localPosition; + } + + /// The local rotation of the pose relative to the universe origin + public Quaternion GetLocalRotation() + { + return sourceMap[SteamVR_Input_Sources.Any].localRotation; + } + + /// The local velocity of the pose relative to the universe origin + public Vector3 GetVelocity() + { + return sourceMap[SteamVR_Input_Sources.Any].velocity; + } + + /// The local angular velocity of the pose relative to the universe origin + public Vector3 GetAngularVelocity() + { + return sourceMap[SteamVR_Input_Sources.Any].angularVelocity; + } + + /// True if the device bound to this action is connected + public bool GetDeviceIsConnected() + { + return sourceMap[SteamVR_Input_Sources.Any].deviceIsConnected; + } + + /// True if the pose retrieved for this action is valid (good data from the tracking source) + public bool GetPoseIsValid() + { + return sourceMap[SteamVR_Input_Sources.Any].poseIsValid; + } + + /// The state of the tracking system that is used to create pose data (position, rotation, etc) + public ETrackingResult GetTrackingResult() + { + return sourceMap[SteamVR_Input_Sources.Any].trackingState; + } + + + + /// The last local position of the pose relative to the universe origin + public Vector3 GetLastLocalPosition() + { + return sourceMap[SteamVR_Input_Sources.Any].lastLocalPosition; + } + + /// The last local rotation of the pose relative to the universe origin + public Quaternion GetLastLocalRotation() + { + return sourceMap[SteamVR_Input_Sources.Any].lastLocalRotation; + } + + /// The last local velocity of the pose relative to the universe origin + public Vector3 GetLastVelocity() + { + return sourceMap[SteamVR_Input_Sources.Any].lastVelocity; + } + + /// The last local angular velocity of the pose relative to the universe origin + public Vector3 GetLastAngularVelocity() + { + return sourceMap[SteamVR_Input_Sources.Any].lastAngularVelocity; + } + + /// True if the device bound to this action was connected during the previous update + public bool GetLastDeviceIsConnected() + { + return sourceMap[SteamVR_Input_Sources.Any].lastDeviceIsConnected; + } + + /// True if the pose was valid during the previous update + public bool GetLastPoseIsValid() + { + return sourceMap[SteamVR_Input_Sources.Any].lastPoseIsValid; + } + + /// The tracking state for this pose during the previous update + public ETrackingResult GetLastTrackingResult() + { + return sourceMap[SteamVR_Input_Sources.Any].lastTrackingState; + } + #endregion + + /// + /// The number of bones in the skeleton for this action + /// + public int boneCount { get { return (int)GetBoneCount(); } } + + /// + /// Gets the bone positions in local space. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public Vector3[] GetBonePositions(bool copy = false) + { + if (copy) + return (Vector3[])sourceMap[SteamVR_Input_Sources.Any].bonePositions.Clone(); + + return sourceMap[SteamVR_Input_Sources.Any].bonePositions; + } + + /// + /// Gets the bone rotations in local space. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public Quaternion[] GetBoneRotations(bool copy = false) + { + if (copy) + return (Quaternion[])sourceMap[SteamVR_Input_Sources.Any].boneRotations.Clone(); + + return sourceMap[SteamVR_Input_Sources.Any].boneRotations; + } + + /// + /// Gets the bone positions in local space from the previous update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public Vector3[] GetLastBonePositions(bool copy = false) + { + if (copy) + return (Vector3[])sourceMap[SteamVR_Input_Sources.Any].lastBonePositions.Clone(); + + return sourceMap[SteamVR_Input_Sources.Any].lastBonePositions; + } + + /// + /// Gets the bone rotations in local space from the previous update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public Quaternion[] GetLastBoneRotations(bool copy = false) + { + if (copy) + return (Quaternion[])sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations.Clone(); + + return sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations; + } + + /// + /// Set the range of the motion of the bones in this skeleton. Options are "With Controller" as if your hand is holding your VR controller. + /// Or "Without Controller" as if your hand is empty. This will set the range for the following update. + /// + public void SetRangeOfMotion(EVRSkeletalMotionRange range) + { + sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion = range; + } + + /// + /// Sets the space that you'll get bone data back in. Options are relative to the Model and relative to the Parent bone + /// + /// the space that you'll get bone data back in. Options are relative to the Model and relative to the Parent bone. + public void SetSkeletalTransformSpace(EVRSkeletalTransformSpace space) + { + sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace = space; + } + + /// + /// Returns the total number of bones in the skeleton + /// + public uint GetBoneCount() + { + return sourceMap[SteamVR_Input_Sources.Any].GetBoneCount(); + } + + /// + /// Returns the order of bones in the hierarchy + /// + public int[] GetBoneHierarchy() + { + return sourceMap[SteamVR_Input_Sources.Any].GetBoneHierarchy(); + } + + /// + /// Returns the name of the bone + /// + public string GetBoneName(int boneIndex) + { + return sourceMap[SteamVR_Input_Sources.Any].GetBoneName(boneIndex); + } + + /// + /// Returns an array of positions/rotations that represent the state of each bone in a reference pose. + /// + /// What to get the position/rotation data relative to, the model, or the bone's parent + /// Which reference pose to return + /// + public SteamVR_Utils.RigidTransform[] GetReferenceTransforms(EVRSkeletalTransformSpace transformSpace, EVRSkeletalReferencePose referencePose) + { + return sourceMap[SteamVR_Input_Sources.Any].GetReferenceTransforms(transformSpace, referencePose); + } + + /// + /// Get the accuracy level of the skeletal tracking data. + /// + /// + /// + /// Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + /// + public EVRSkeletalTrackingLevel GetSkeletalTrackingLevel() + { + return sourceMap[SteamVR_Input_Sources.Any].GetSkeletalTrackingLevel(); + } + + /// + /// Returns the finger curl data that we calculate each update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public float[] GetFingerCurls(bool copy = false) + { + if (copy) + return (float[])sourceMap[SteamVR_Input_Sources.Any].fingerCurls.Clone(); + else + return sourceMap[SteamVR_Input_Sources.Any].fingerCurls; + } + + /// + /// Returns the finger curl data from the previous update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public float[] GetLastFingerCurls(bool copy = false) + { + if (copy) + return (float[])sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls.Clone(); + else + return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls; + } + + /// + /// Returns the finger splay data that we calculate each update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public float[] GetFingerSplays(bool copy = false) + { + if (copy) + return (float[])sourceMap[SteamVR_Input_Sources.Any].fingerSplays.Clone(); + else + return sourceMap[SteamVR_Input_Sources.Any].fingerSplays; + } + + /// + /// Returns the finger splay data from the previous update. This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + /// + /// This array may be modified later so if you want to hold this data then pass true to get a copy of the data instead of the actual array + public float[] GetLastFingerSplays(bool copy = false) + { + if (copy) + return (float[])sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays.Clone(); + else + return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays; + } + + /// + /// Returns a value indicating how much the passed in finger is currently curled. + /// + /// The index of the finger to return a curl value for. 0-4. thumb, index, middle, ring, pinky + /// 0-1 value. 0 being straight, 1 being fully curled. + public float GetFingerCurl(int finger) + { + return sourceMap[SteamVR_Input_Sources.Any].fingerCurls[finger]; + } + + /// + /// Returns a value indicating how the size of the gap between fingers. + /// + /// The index of the finger gap to return a splay value for. 0 being the gap between thumb and index, 1 being the gap between index and middle, 2 being the gap between middle and ring, and 3 being the gap between ring and pinky. + /// 0-1 value. 0 being no gap, 1 being "full" gap + public float GetSplay(int fingerGapIndex) + { + return sourceMap[SteamVR_Input_Sources.Any].fingerSplays[fingerGapIndex]; + } + + /// + /// Returns a value indicating how much the passed in finger is currently curled. + /// + /// The finger to return a curl value for + /// 0-1 value. 0 being straight, 1 being fully curled. + public float GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum finger) + { + return GetFingerCurl((int)finger); + } + + /// + /// Returns a value indicating how the size of the gap between fingers. + /// + /// The finger gap to return a splay value for. + /// 0-1 value. 0 being no gap, 1 being "full" gap + public float GetSplay(SteamVR_Skeleton_FingerSplayIndexEnum fingerSplay) + { + return GetSplay((int)fingerSplay); + } + + /// + /// Returns a value indicating how much the passed in finger was curled during the previous update + /// + /// The index of the finger to return a curl value for. 0-4. thumb, index, middle, ring, pinky + /// 0-1 value. 0 being straight, 1 being fully curled. + public float GetLastFingerCurl(int finger) + { + return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls[finger]; + } + + /// + /// Returns a value indicating the size of the gap between fingers during the previous update + /// + /// The index of the finger gap to return a splay value for. 0 being the gap between thumb and index, 1 being the gap between index and middle, 2 being the gap between middle and ring, and 3 being the gap between ring and pinky. + /// 0-1 value. 0 being no gap, 1 being "full" gap + public float GetLastSplay(int fingerGapIndex) + { + return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays[fingerGapIndex]; + } + + /// + /// Returns a value indicating how much the passed in finger was curled during the previous update + /// + /// The finger to return a curl value for + /// 0-1 value. 0 being straight, 1 being fully curled. + public float GetLastFingerCurl(SteamVR_Skeleton_FingerIndexEnum finger) + { + return GetLastFingerCurl((int)finger); + } + + /// + /// Returns a value indicating the size of the gap between fingers during the previous update + /// + /// The finger gap to return a splay value for. + /// 0-1 value. 0 being no gap, 1 being "full" gap + public float GetLastSplay(SteamVR_Skeleton_FingerSplayIndexEnum fingerSplay) + { + return GetLastSplay((int)fingerSplay); + } + + + /// + /// Gets the localized name of the device that the action corresponds to. Include as many EVRInputStringBits as you want to add to the localized string + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. ex: "Left Hand". + /// VRInputString_ControllerType - What kind of controller the user has in that hand. ex: "Vive Controller". + /// VRInputString_InputSource - What part of that controller is the origin. ex: "Trackpad". + /// VRInputString_All - All of the above. ex: "Left Hand Vive Controller Trackpad". + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + return sourceMap[SteamVR_Input_Sources.Any].GetLocalizedOriginPart(localizedParts); + } + + + + /// Fires an event when a device is connected or disconnected. + /// The method you would like to be called when a device is connected. Should take a SteamVR_Action_Pose as a param + public void AddOnDeviceConnectedChanged(DeviceConnectedChangeHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The method you would like to stop calling when a device is connected. Should take a SteamVR_Action_Pose as a param + public void RemoveOnDeviceConnectedChanged(DeviceConnectedChangeHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged -= functionToStopCalling; + } + + + /// Fires an event when the tracking of the device has changed + /// The method you would like to be called when tracking has changed. Should take a SteamVR_Action_Pose as a param + public void AddOnTrackingChanged(TrackingChangeHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The method you would like to stop calling when tracking has changed. Should take a SteamVR_Action_Pose as a param + public void RemoveOnTrackingChanged(TrackingChangeHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged -= functionToStopCalling; + } + + + /// Fires an event when the device now has a valid pose or no longer has a valid pose + /// The method you would like to be called when the pose has become valid or invalid. Should take a SteamVR_Action_Pose as a param + public void AddOnValidPoseChanged(ValidPoseChangeHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The method you would like to stop calling when the pose has become valid or invalid. Should take a SteamVR_Action_Pose as a param + public void RemoveOnValidPoseChanged(ValidPoseChangeHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged -= functionToStopCalling; + } + + + /// Executes a function when this action's bound state changes + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onActiveChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action changes + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + public void AddOnChangeListener(ChangeHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + public void RemoveOnChangeListener(ChangeHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + public void AddOnUpdateListener(UpdateHandler functionToCall) + { + sourceMap[SteamVR_Input_Sources.Any].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling) + { + sourceMap[SteamVR_Input_Sources.Any].onUpdate -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + + public static Quaternion steamVRFixUpRotation = Quaternion.AngleAxis(Mathf.PI * Mathf.Rad2Deg, Vector3.up); + } + + public class SteamVR_Action_Skeleton_Source_Map : SteamVR_Action_Pose_Source_Map + { + protected override SteamVR_Action_Skeleton_Source GetSourceElementForIndexer(SteamVR_Input_Sources inputSource) + { + return sources[0]; //just in case somebody tries to access a different element, redirect them to the correct one. + } + } + + /// + /// Skeleton Actions are our best approximation of where your hands are while holding vr controllers and pressing buttons. We give you 31 bones to help you animate hand models. + /// For more information check out this blog post: https://steamcommunity.com/games/250820/announcements/detail/1690421280625220068 + /// + public class SteamVR_Action_Skeleton_Source : SteamVR_Action_Pose_Source, ISteamVR_Action_Skeleton_Source + { + protected static uint skeletonActionData_size = 0; + + /// Event fires when the active state (ActionSet active and binding active) changes + public new event SteamVR_Action_Skeleton.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public new event SteamVR_Action_Skeleton.ActiveChangeHandler onActiveBindingChange; + + /// Event fires when the orientation of the pose or bones changes more than the changeTolerance + public new event SteamVR_Action_Skeleton.ChangeHandler onChange; + + /// Event fires when the action is updated + public new event SteamVR_Action_Skeleton.UpdateHandler onUpdate; + + /// Event fires when the state of the tracking system that is used to create pose data (position, rotation, etc) changes + public new event SteamVR_Action_Skeleton.TrackingChangeHandler onTrackingChanged; + + /// Event fires when the state of the pose data retrieved for this action changes validity (good/bad data from the tracking source) + public new event SteamVR_Action_Skeleton.ValidPoseChangeHandler onValidPoseChanged; + + /// Event fires when the device bound to this action is connected or disconnected + public new event SteamVR_Action_Skeleton.DeviceConnectedChangeHandler onDeviceConnectedChanged; + + + /// True if the action is bound + public override bool activeBinding { get { return skeletonActionData.bActive; } } + + /// True if the action's binding was active during the previous update + public override bool lastActiveBinding { get { return lastSkeletonActionData.bActive; } } + + /// An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Vector3[] bonePositions { get; protected set; } + + /// An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Quaternion[] boneRotations { get; protected set; } + + /// From the previous update: An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Vector3[] lastBonePositions { get; protected set; } + + /// From the previous update: An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + public Quaternion[] lastBoneRotations { get; protected set; } + + + /// The range of motion the we're using to get bone data from. With Controller being your hand while holding the controller. + public EVRSkeletalMotionRange rangeOfMotion { get; set; } + + /// The space to get bone data in. Parent space by default + public EVRSkeletalTransformSpace skeletalTransformSpace { get; set; } + + + /// The type of summary data that will be retrieved by default. FromAnimation is smoothed data to based on the skeletal animation system. FromDevice is as recent from the device as we can get - may be different data from smoothed. + public EVRSummaryType summaryDataType { get; set; } + + + /// A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + public float thumbCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.thumb]; } } + + /// A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + public float indexCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.index]; } } + + /// A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + public float middleCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.middle]; } } + + /// A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + public float ringCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.ring]; } } + + /// A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + public float pinkyCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.pinky]; } } + + + /// A 0-1 value representing the size of the gap between the thumb and index fingers + public float thumbIndexSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.thumbIndex]; } } + + /// A 0-1 value representing the size of the gap between the index and middle fingers + public float indexMiddleSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.indexMiddle]; } } + + /// A 0-1 value representing the size of the gap between the middle and ring fingers + public float middleRingSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.middleRing]; } } + + /// A 0-1 value representing the size of the gap between the ring and pinky fingers + public float ringPinkySplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.ringPinky]; } } + + + /// [Previous Update] A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + public float lastThumbCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.thumb]; } } + + /// [Previous Update] A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + public float lastIndexCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.index]; } } + + /// [Previous Update] A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + public float lastMiddleCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.middle]; } } + + /// [Previous Update] A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + public float lastRingCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.ring]; } } + + /// [Previous Update] A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + public float lastPinkyCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.pinky]; } } + + + /// [Previous Update] A 0-1 value representing the size of the gap between the thumb and index fingers + public float lastThumbIndexSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.thumbIndex]; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the index and middle fingers + public float lastIndexMiddleSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.indexMiddle]; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the middle and ring fingers + public float lastMiddleRingSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.middleRing]; } } + + /// [Previous Update] A 0-1 value representing the size of the gap between the ring and pinky fingers + public float lastRingPinkySplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.ringPinky]; } } + + + /// 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] fingerCurls { get; protected set; } + + /// 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] fingerSplays { get; protected set; } + + /// [Previous Update] 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] lastFingerCurls { get; protected set; } + + /// [Previous Update] 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + public float[] lastFingerSplays { get; protected set; } + + /// Separate from "changed". If the pose for this skeleton action has changed (root position/rotation) + public bool poseChanged { get; protected set; } + + /// Skips processing the full per bone data and only does the summary data + public bool onlyUpdateSummaryData { get; set; } + + + protected VRSkeletalSummaryData_t skeletalSummaryData = new VRSkeletalSummaryData_t(); + protected VRSkeletalSummaryData_t lastSkeletalSummaryData = new VRSkeletalSummaryData_t(); + protected SteamVR_Action_Skeleton skeletonAction; + + protected VRBoneTransform_t[] tempBoneTransforms = new VRBoneTransform_t[SteamVR_Action_Skeleton.numBones]; + + protected InputSkeletalActionData_t skeletonActionData = new InputSkeletalActionData_t(); + + protected InputSkeletalActionData_t lastSkeletonActionData = new InputSkeletalActionData_t(); + + protected InputSkeletalActionData_t tempSkeletonActionData = new InputSkeletalActionData_t(); + + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + skeletonAction = (SteamVR_Action_Skeleton)wrappingAction; + + bonePositions = new Vector3[SteamVR_Action_Skeleton.numBones]; + lastBonePositions = new Vector3[SteamVR_Action_Skeleton.numBones]; + boneRotations = new Quaternion[SteamVR_Action_Skeleton.numBones]; + lastBoneRotations = new Quaternion[SteamVR_Action_Skeleton.numBones]; + + rangeOfMotion = EVRSkeletalMotionRange.WithController; + skeletalTransformSpace = EVRSkeletalTransformSpace.Parent; + + fingerCurls = new float[SteamVR_Skeleton_FingerIndexes.enumArray.Length]; + fingerSplays = new float[SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length]; + + lastFingerCurls = new float[SteamVR_Skeleton_FingerIndexes.enumArray.Length]; + lastFingerSplays = new float[SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length]; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the skeletal action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (skeletonActionData_size == 0) + skeletonActionData_size = (uint)Marshal.SizeOf(typeof(InputSkeletalActionData_t)); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + UpdateValue(false); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue(bool skipStateAndEventUpdates) + { + lastActive = active; + lastSkeletonActionData = skeletonActionData; + lastSkeletalSummaryData = skeletalSummaryData; + + if (onlyUpdateSummaryData == false) + { + for (int boneIndex = 0; boneIndex < SteamVR_Action_Skeleton.numBones; boneIndex++) + { + lastBonePositions[boneIndex] = bonePositions[boneIndex]; + lastBoneRotations[boneIndex] = boneRotations[boneIndex]; + } + } + + for (int fingerIndex = 0; fingerIndex < SteamVR_Skeleton_FingerIndexes.enumArray.Length; fingerIndex++) + { + lastFingerCurls[fingerIndex] = fingerCurls[fingerIndex]; + } + + for (int fingerIndex = 0; fingerIndex < SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length; fingerIndex++) + { + lastFingerSplays[fingerIndex] = fingerSplays[fingerIndex]; + } + + base.UpdateValue(true); + poseChanged = changed; + + EVRInputError error = OpenVR.Input.GetSkeletalActionData(handle, ref skeletonActionData, skeletonActionData_size); + if (error != EVRInputError.None) + { + Debug.LogError("[SteamVR] GetSkeletalActionData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + return; + } + + if (active) + { + if (onlyUpdateSummaryData == false) + { + error = OpenVR.Input.GetSkeletalBoneData(handle, skeletalTransformSpace, rangeOfMotion, tempBoneTransforms); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetSkeletalBoneData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + for (int boneIndex = 0; boneIndex < tempBoneTransforms.Length; boneIndex++) + { + // SteamVR's coordinate system is right handed, and Unity's is left handed. The FBX data has its + // X axis flipped when Unity imports it, so here we need to flip the X axis as well + bonePositions[boneIndex].x = -tempBoneTransforms[boneIndex].position.v0; + bonePositions[boneIndex].y = tempBoneTransforms[boneIndex].position.v1; + bonePositions[boneIndex].z = tempBoneTransforms[boneIndex].position.v2; + + boneRotations[boneIndex].x = tempBoneTransforms[boneIndex].orientation.x; + boneRotations[boneIndex].y = -tempBoneTransforms[boneIndex].orientation.y; + boneRotations[boneIndex].z = -tempBoneTransforms[boneIndex].orientation.z; + boneRotations[boneIndex].w = tempBoneTransforms[boneIndex].orientation.w; + } + + // Now that we're in the same handedness as Unity, rotate the root bone around the Y axis + // so that forward is facing down +Z + + boneRotations[0] = SteamVR_Action_Skeleton.steamVRFixUpRotation * boneRotations[0]; + } + + UpdateSkeletalSummaryData(summaryDataType, true); + } + + if (changed == false) + { + for (int boneIndex = 0; boneIndex < tempBoneTransforms.Length; boneIndex++) + { + if (Vector3.Distance(lastBonePositions[boneIndex], bonePositions[boneIndex]) > changeTolerance) + { + changed = true; + break; + } + + if (Mathf.Abs(Quaternion.Angle(lastBoneRotations[boneIndex], boneRotations[boneIndex])) > changeTolerance) + { + changed = true; + break; + } + } + } + + if (changed) + changedTime = Time.realtimeSinceStartup; + + if (skipStateAndEventUpdates == false) + CheckAndSendEvents(); + } + + /// + /// The number of bones in the skeleton for this action + /// + public int boneCount { get { return (int)GetBoneCount(); } } + + /// + /// Gets the number of bones in the skeleton for this action + /// + public uint GetBoneCount() + { + uint boneCount = 0; + EVRInputError error = OpenVR.Input.GetBoneCount(handle, ref boneCount); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetBoneCount error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + return boneCount; + } + + /// + /// Gets the ordering of the bone hierarchy + /// + public int[] boneHierarchy { get { return GetBoneHierarchy(); } } + + /// + /// Gets the ordering of the bone hierarchy + /// + public int[] GetBoneHierarchy() + { + int boneCount = (int)GetBoneCount(); + int[] parentIndicies = new int[boneCount]; + + EVRInputError error = OpenVR.Input.GetBoneHierarchy(handle, parentIndicies); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetBoneHierarchy error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + return parentIndicies; + } + + /// + /// Gets the name for a bone at the specified index + /// + public string GetBoneName(int boneIndex) + { + StringBuilder stringBuilder = new StringBuilder(255); + EVRInputError error = OpenVR.Input.GetBoneName(handle, boneIndex, stringBuilder, 255); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetBoneName error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + return stringBuilder.ToString(); + } + + /// + /// Returns an array of positions/rotations that represent the state of each bone in a reference pose. + /// + /// What to get the position/rotation data relative to, the model, or the bone's parent + /// Which reference pose to return + /// + public SteamVR_Utils.RigidTransform[] GetReferenceTransforms(EVRSkeletalTransformSpace transformSpace, EVRSkeletalReferencePose referencePose) + { + SteamVR_Utils.RigidTransform[] transforms = new SteamVR_Utils.RigidTransform[GetBoneCount()]; + + VRBoneTransform_t[] boneTransforms = new VRBoneTransform_t[transforms.Length]; + + EVRInputError error = OpenVR.Input.GetSkeletalReferenceTransforms(handle, transformSpace, referencePose, boneTransforms); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetSkeletalReferenceTransforms error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + for (int transformIndex = 0; transformIndex < boneTransforms.Length; transformIndex++) + { + Vector3 position = new Vector3(-boneTransforms[transformIndex].position.v0, boneTransforms[transformIndex].position.v1, boneTransforms[transformIndex].position.v2); + Quaternion rotation = new Quaternion(boneTransforms[transformIndex].orientation.x, -boneTransforms[transformIndex].orientation.y, -boneTransforms[transformIndex].orientation.z, boneTransforms[transformIndex].orientation.w); + transforms[transformIndex] = new SteamVR_Utils.RigidTransform(position, rotation); + } + + if (transforms.Length > 0) + { + // Now that we're in the same handedness as Unity, rotate the root bone around the Y axis + // so that forward is facing down +Z + Quaternion qFixUpRot = Quaternion.AngleAxis(Mathf.PI * Mathf.Rad2Deg, Vector3.up); + + transforms[0].rot = qFixUpRot * transforms[0].rot; + } + + return transforms; + } + + /// + /// Get the accuracy level of the skeletal tracking data. + /// * Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// * Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// * Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + public EVRSkeletalTrackingLevel skeletalTrackingLevel { get { return GetSkeletalTrackingLevel(); } } + + /// + /// Get the accuracy level of the skeletal tracking data. + /// * Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// * Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// * Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + public EVRSkeletalTrackingLevel GetSkeletalTrackingLevel() + { + EVRSkeletalTrackingLevel skeletalTrackingLevel = EVRSkeletalTrackingLevel.VRSkeletalTracking_Estimated; + + EVRInputError error = OpenVR.Input.GetSkeletalTrackingLevel(handle, ref skeletalTrackingLevel); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetSkeletalTrackingLevel error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + return skeletalTrackingLevel; + } + + /// + /// Get the skeletal summary data structure from OpenVR. + /// Contains curl and splay data in finger order: thumb, index, middlg, ring, pinky. + /// Easier access at named members: indexCurl, ringSplay, etc. + /// + protected VRSkeletalSummaryData_t GetSkeletalSummaryData(EVRSummaryType summaryType = EVRSummaryType.FromAnimation, bool force = false) + { + UpdateSkeletalSummaryData(summaryType, force); + return skeletalSummaryData; + } + + /// + /// Updates the skeletal summary data structure from OpenVR. + /// Contains curl and splay data in finger order: thumb, index, middlg, ring, pinky. + /// Easier access at named members: indexCurl, ringSplay, etc. + /// + protected void UpdateSkeletalSummaryData(EVRSummaryType summaryType = EVRSummaryType.FromAnimation, bool force = false) + { + if (force || this.summaryDataType != summaryDataType && active) + { + EVRInputError error = OpenVR.Input.GetSkeletalSummaryData(handle, summaryType, ref skeletalSummaryData); + if (error != EVRInputError.None) + Debug.LogError("[SteamVR] GetSkeletalSummaryData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString()); + + fingerCurls[0] = skeletalSummaryData.flFingerCurl0; + fingerCurls[1] = skeletalSummaryData.flFingerCurl1; + fingerCurls[2] = skeletalSummaryData.flFingerCurl2; + fingerCurls[3] = skeletalSummaryData.flFingerCurl3; + fingerCurls[4] = skeletalSummaryData.flFingerCurl4; + + //no splay data for thumb + fingerSplays[0] = skeletalSummaryData.flFingerSplay0; + fingerSplays[1] = skeletalSummaryData.flFingerSplay1; + fingerSplays[2] = skeletalSummaryData.flFingerSplay2; + fingerSplays[3] = skeletalSummaryData.flFingerSplay3; + } + } + + protected override void CheckAndSendEvents() + { + if (trackingState != lastTrackingState && onTrackingChanged != null) + onTrackingChanged.Invoke(skeletonAction, trackingState); + + if (poseIsValid != lastPoseIsValid && onValidPoseChanged != null) + onValidPoseChanged.Invoke(skeletonAction, poseIsValid); + + if (deviceIsConnected != lastDeviceIsConnected && onDeviceConnectedChanged != null) + onDeviceConnectedChanged.Invoke(skeletonAction, deviceIsConnected); + + if (changed && onChange != null) + onChange.Invoke(skeletonAction); + + if (active != lastActive && onActiveChange != null) + onActiveChange.Invoke(skeletonAction, active); + + if (activeBinding != lastActiveBinding && onActiveBindingChange != null) + onActiveBindingChange.Invoke(skeletonAction, activeBinding); + + if (onUpdate != null) + onUpdate.Invoke(skeletonAction); + } + } + + public interface ISteamVR_Action_Skeleton_Source + { + /// + /// Get the accuracy level of the skeletal tracking data. + /// * Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// * Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// * Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + EVRSkeletalTrackingLevel skeletalTrackingLevel { get; } + + /// An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + Vector3[] bonePositions { get; } + + /// An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + Quaternion[] boneRotations { get; } + + /// From the previous update: An array of the positions of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + Vector3[] lastBonePositions { get; } + + /// From the previous update: An array of the rotations of the bones from the most recent update. Relative to skeletalTransformSpace. See SteamVR_Skeleton_JointIndexes for bone indexes. + Quaternion[] lastBoneRotations { get; } + + /// The range of motion the we're using to get bone data from. With Controller being your hand while holding the controller. + EVRSkeletalMotionRange rangeOfMotion { get; set; } + + /// The space to get bone data in. Parent space by default + EVRSkeletalTransformSpace skeletalTransformSpace { get; set; } + + /// Skips processing the full per bone data and only does the summary data + bool onlyUpdateSummaryData { get; set; } + + /// A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + float thumbCurl { get; } + + /// A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + float indexCurl { get; } + + /// A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + float middleCurl { get; } + + /// A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + float ringCurl { get; } + + /// A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + float pinkyCurl { get; } + + /// A 0-1 value representing the size of the gap between the thumb and index fingers + float thumbIndexSplay { get; } + + /// A 0-1 value representing the size of the gap between the index and middle fingers + float indexMiddleSplay { get; } + + /// A 0-1 value representing the size of the gap between the middle and ring fingers + float middleRingSplay { get; } + + /// A 0-1 value representing the size of the gap between the ring and pinky fingers + float ringPinkySplay { get; } + + + /// [Previous Update] A 0-1 value representing how curled the thumb is. 0 being straight, 1 being fully curled. + float lastThumbCurl { get; } + + /// [Previous Update] A 0-1 value representing how curled the index finger is. 0 being straight, 1 being fully curled. + float lastIndexCurl { get; } + + /// [Previous Update] A 0-1 value representing how curled the middle finger is. 0 being straight, 1 being fully curled. + float lastMiddleCurl { get; } + + /// [Previous Update] A 0-1 value representing how curled the ring finger is. 0 being straight, 1 being fully curled. + float lastRingCurl { get; } + + /// [Previous Update] A 0-1 value representing how curled the pinky finger is. 0 being straight, 1 being fully curled. + float lastPinkyCurl { get; } + + /// [Previous Update] A 0-1 value representing the size of the gap between the thumb and index fingers + float lastThumbIndexSplay { get; } + + /// [Previous Update] A 0-1 value representing the size of the gap between the index and middle fingers + float lastIndexMiddleSplay { get; } + + /// [Previous Update] A 0-1 value representing the size of the gap between the middle and ring fingers + float lastMiddleRingSplay { get; } + + /// [Previous Update] A 0-1 value representing the size of the gap between the ring and pinky fingers + float lastRingPinkySplay { get; } + + + + /// 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + float[] fingerCurls { get; } + + /// 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + float[] fingerSplays { get; } + + /// [Previous Update] 0-1 values representing how curled the specified finger is. 0 being straight, 1 being fully curled. For indexes see: SteamVR_Skeleton_FingerIndexes + float[] lastFingerCurls { get; } + + /// [Previous Update] 0-1 values representing how splayed the specified finger and it's next index'd finger is. For indexes see: SteamVR_Skeleton_FingerIndexes + float[] lastFingerSplays { get; } + } + + /// + /// The change in range of the motion of the bones in the skeleton. Options are "With Controller" as if your hand is holding your VR controller. + /// Or "Without Controller" as if your hand is empty. + /// + public enum SkeletalMotionRangeChange + { + None = -1, + + /// Estimation of bones in hand while holding a controller + WithController = 0, + + /// Estimation of bones in hand while hand is empty (allowing full fist) + WithoutController = 1, + } + + + + /// The order of the joints that SteamVR Skeleton Input is expecting. + public static class SteamVR_Skeleton_JointIndexes + { + public const int root = 0; + public const int wrist = 1; + public const int thumbMetacarpal = 2; + public const int thumbProximal = 2; + public const int thumbMiddle = 3; + public const int thumbDistal = 4; + public const int thumbTip = 5; + public const int indexMetacarpal = 6; + public const int indexProximal = 7; + public const int indexMiddle = 8; + public const int indexDistal = 9; + public const int indexTip = 10; + public const int middleMetacarpal = 11; + public const int middleProximal = 12; + public const int middleMiddle = 13; + public const int middleDistal = 14; + public const int middleTip = 15; + public const int ringMetacarpal = 16; + public const int ringProximal = 17; + public const int ringMiddle = 18; + public const int ringDistal = 19; + public const int ringTip = 20; + public const int pinkyMetacarpal = 21; + public const int pinkyProximal = 22; + public const int pinkyMiddle = 23; + public const int pinkyDistal = 24; + public const int pinkyTip = 25; + public const int thumbAux = 26; + public const int indexAux = 27; + public const int middleAux = 28; + public const int ringAux = 29; + public const int pinkyAux = 30; + + public static int GetFingerForBone(int boneIndex) + { + switch (boneIndex) + { + case root: + case wrist: + return -1; + + case thumbMetacarpal: + case thumbMiddle: + case thumbDistal: + case thumbTip: + case thumbAux: + return 0; + + case indexMetacarpal: + case indexProximal: + case indexMiddle: + case indexDistal: + case indexTip: + case indexAux: + return 1; + + case middleMetacarpal: + case middleProximal: + case middleMiddle: + case middleDistal: + case middleTip: + case middleAux: + return 2; + + case ringMetacarpal: + case ringProximal: + case ringMiddle: + case ringDistal: + case ringTip: + case ringAux: + return 3; + + case pinkyMetacarpal: + case pinkyProximal: + case pinkyMiddle: + case pinkyDistal: + case pinkyTip: + case pinkyAux: + return 4; + + default: + return -1; + } + } + + public static int GetBoneForFingerTip(int fingerIndex) + { + switch (fingerIndex) + { + case SteamVR_Skeleton_FingerIndexes.thumb: + return thumbTip; + case SteamVR_Skeleton_FingerIndexes.index: + return indexTip; + case SteamVR_Skeleton_FingerIndexes.middle: + return middleTip; + case SteamVR_Skeleton_FingerIndexes.ring: + return ringTip; + case SteamVR_Skeleton_FingerIndexes.pinky: + return pinkyTip; + default: + return indexTip; + } + } + } + + public enum SteamVR_Skeleton_JointIndexEnum + { + root = SteamVR_Skeleton_JointIndexes.root, + wrist = SteamVR_Skeleton_JointIndexes.wrist, + thumbMetacarpal = SteamVR_Skeleton_JointIndexes.thumbMetacarpal, + thumbProximal = SteamVR_Skeleton_JointIndexes.thumbProximal, + thumbMiddle = SteamVR_Skeleton_JointIndexes.thumbMiddle, + thumbDistal = SteamVR_Skeleton_JointIndexes.thumbDistal, + thumbTip = SteamVR_Skeleton_JointIndexes.thumbTip, + indexMetacarpal = SteamVR_Skeleton_JointIndexes.indexMetacarpal, + indexProximal = SteamVR_Skeleton_JointIndexes.indexProximal, + indexMiddle = SteamVR_Skeleton_JointIndexes.indexMiddle, + indexDistal = SteamVR_Skeleton_JointIndexes.indexDistal, + indexTip = SteamVR_Skeleton_JointIndexes.indexTip, + middleMetacarpal = SteamVR_Skeleton_JointIndexes.middleMetacarpal, + middleProximal = SteamVR_Skeleton_JointIndexes.middleProximal, + middleMiddle = SteamVR_Skeleton_JointIndexes.middleMiddle, + middleDistal = SteamVR_Skeleton_JointIndexes.middleDistal, + middleTip = SteamVR_Skeleton_JointIndexes.middleTip, + ringMetacarpal = SteamVR_Skeleton_JointIndexes.ringMetacarpal, + ringProximal = SteamVR_Skeleton_JointIndexes.ringProximal, + ringMiddle = SteamVR_Skeleton_JointIndexes.ringMiddle, + ringDistal = SteamVR_Skeleton_JointIndexes.ringDistal, + ringTip = SteamVR_Skeleton_JointIndexes.ringTip, + pinkyMetacarpal = SteamVR_Skeleton_JointIndexes.pinkyMetacarpal, + pinkyProximal = SteamVR_Skeleton_JointIndexes.pinkyProximal, + pinkyMiddle = SteamVR_Skeleton_JointIndexes.pinkyMiddle, + pinkyDistal = SteamVR_Skeleton_JointIndexes.pinkyDistal, + pinkyTip = SteamVR_Skeleton_JointIndexes.pinkyTip, + thumbAux = SteamVR_Skeleton_JointIndexes.thumbAux, + indexAux = SteamVR_Skeleton_JointIndexes.indexAux, + middleAux = SteamVR_Skeleton_JointIndexes.middleAux, + ringAux = SteamVR_Skeleton_JointIndexes.ringAux, + pinkyAux = SteamVR_Skeleton_JointIndexes.pinkyAux, + } + + + /// The order of the fingers that SteamVR Skeleton Input outputs + public class SteamVR_Skeleton_FingerIndexes + { + public const int thumb = 0; + public const int index = 1; + public const int middle = 2; + public const int ring = 3; + public const int pinky = 4; + + public static SteamVR_Skeleton_FingerIndexEnum[] enumArray = (SteamVR_Skeleton_FingerIndexEnum[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerIndexEnum)); + } + + /// The order of the fingerSplays that SteamVR Skeleton Input outputs + public class SteamVR_Skeleton_FingerSplayIndexes + { + public const int thumbIndex = 0; + public const int indexMiddle = 1; + public const int middleRing = 2; + public const int ringPinky = 3; + + public static SteamVR_Skeleton_FingerSplayIndexEnum[] enumArray = (SteamVR_Skeleton_FingerSplayIndexEnum[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerSplayIndexEnum)); + } + + public enum SteamVR_Skeleton_FingerSplayIndexEnum + { + thumbIndex = SteamVR_Skeleton_FingerSplayIndexes.thumbIndex, + indexMiddle = SteamVR_Skeleton_FingerSplayIndexes.indexMiddle, + middleRing = SteamVR_Skeleton_FingerSplayIndexes.middleRing, + ringPinky = SteamVR_Skeleton_FingerSplayIndexes.ringPinky, + } + + public enum SteamVR_Skeleton_FingerIndexEnum + { + thumb = SteamVR_Skeleton_FingerIndexes.thumb, + index = SteamVR_Skeleton_FingerIndexes.index, + middle = SteamVR_Skeleton_FingerIndexes.middle, + ring = SteamVR_Skeleton_FingerIndexes.ring, + pinky = SteamVR_Skeleton_FingerIndexes.pinky, + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs.meta new file mode 100644 index 00000000..7dddd23a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Skeleton.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84215d4427008924ebae4389d3e197e6 +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs new file mode 100644 index 00000000..8ee2d8a7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs @@ -0,0 +1,362 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// An analog action with two values generally from -1 to 1. Also provides a delta since the last update. + /// + public class SteamVR_Action_Vector2 : SteamVR_Action_In, ISteamVR_Action_Vector2, ISerializationCallbackReceiver + { + public delegate void AxisHandler(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 axis, Vector2 delta); + public delegate void ActiveChangeHandler(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 axis, Vector2 delta); + public delegate void UpdateHandler(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 axis, Vector2 delta); + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the axis changes by more than the specified changeTolerance + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event will fire whenever the Vector2 value of the action is non-zero + public event AxisHandler onAxis + { add { sourceMap[SteamVR_Input_Sources.Any].onAxis += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onAxis -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + + /// [Shortcut to: SteamVR_Input_Sources.Any] The current Vector2 value of the action. + /// Note: Will only return non-zero if the action is also active. + public Vector2 axis { get { return sourceMap[SteamVR_Input_Sources.Any].axis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector2 value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector2 lastAxis { get { return sourceMap[SteamVR_Input_Sources.Any].lastAxis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector2 value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector2 delta { get { return sourceMap[SteamVR_Input_Sources.Any].delta; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector2 value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public Vector2 lastDelta { get { return sourceMap[SteamVR_Input_Sources.Any].lastDelta; } } + + + public SteamVR_Action_Vector2() { } + + /// The current Vector2 value of the action + /// The device you would like to get data from. Any if the action is not device specific. + public Vector2 GetAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].axis; + } + + /// The Vector2 value difference between this update and the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector2 GetAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].delta; + } + + /// The Vector2 value of the action from the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector2 GetLastAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastAxis; + } + + /// The Vector2 value difference between the previous update and update before that. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector2 GetLastAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastDelta; + } + + /// Executes a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the active state of this action (with the specified inputSource) changes. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling; + } + + /// Executes a function when the axis changes by more than the specified changeTolerance + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnChangeListener(ChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnChangeListener(ChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnUpdateListener(UpdateHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate -= functionToStopCalling; + } + + /// Executes a function when the Vector2 value of the action is non-zero. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnAxisListener(AxisHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnAxisListener(AxisHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + } + + /// + /// Boolean actions are either true or false. There is an onStateUp and onStateDown event for the rising and falling edge. + /// + public class SteamVR_Action_Vector2_Source_Map : SteamVR_Action_In_Source_Map + { + } + + public class SteamVR_Action_Vector2_Source : SteamVR_Action_In_Source, ISteamVR_Action_Vector2 + { + protected static uint actionData_size = 0; + + /// The amount the axis needs to change before a change is detected + public float changeTolerance = Mathf.Epsilon; + + /// Event fires when the value of the action is non-zero + public event SteamVR_Action_Vector2.AxisHandler onAxis; + + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Vector2.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Vector2.ActiveChangeHandler onActiveBindingChange; + + /// This event fires whenever the axis changes by more than the specified changeTolerance + public event SteamVR_Action_Vector2.ChangeHandler onChange; + + /// Event fires when the action is updated + public event SteamVR_Action_Vector2.UpdateHandler onUpdate; + + + /// The current Vector2 value of the action. + /// Note: Will only return non-zero if the action is also active. + public Vector2 axis { get; protected set; } + + /// The Vector2 value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector2 lastAxis { get; protected set; } + + /// The Vector2 value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector2 delta { get; protected set; } + + /// The Vector2 value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public Vector2 lastDelta { get; protected set; } + + + /// If the Vector2 value of this action has changed more than the changeTolerance since the last update + public override bool changed { get; protected set; } + + + /// If the Vector2 value of this action has changed more than the changeTolerance between the previous update and the update before that + public override bool lastChanged { get; protected set; } + + /// The handle to the origin of the component that was used to update the value for this action + public override ulong activeOrigin + { + get + { + if (active) + return actionData.activeOrigin; + + return 0; + } + } + + /// The handle to the origin of the component that was used to update the value for this action (for the previous update) + public override ulong lastActiveOrigin { get { return lastActionData.activeOrigin; } } + + /// Returns true if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } } + + /// Returns true if the action is bound + public override bool activeBinding { get { return actionData.bActive; } } + + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public override bool lastActiveBinding { get { return lastActionData.bActive; } } + + + protected InputAnalogActionData_t actionData = new InputAnalogActionData_t(); + protected InputAnalogActionData_t lastActionData = new InputAnalogActionData_t(); + + protected SteamVR_Action_Vector2 vector2Action; + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + vector2Action = (SteamVR_Action_Vector2)wrappingAction; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (actionData_size == 0) + actionData_size = (uint)Marshal.SizeOf(typeof(InputAnalogActionData_t)); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + lastActionData = actionData; + lastActive = active; + lastAxis = axis; + lastDelta = delta; + + EVRInputError err = OpenVR.Input.GetAnalogActionData(handle, ref actionData, actionData_size, SteamVR_Input_Source.GetHandle(inputSource)); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetAnalogActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString()); + + updateTime = Time.realtimeSinceStartup; + axis = new Vector2(actionData.x, actionData.y); + delta = new Vector2(actionData.deltaX, actionData.deltaY); + + changed = false; + + if (active) + { + if (delta.magnitude > changeTolerance) + { + changed = true; + changedTime = Time.realtimeSinceStartup + actionData.fUpdateTime; //fUpdateTime is the time from the time the action was called that the action changed + + if (onChange != null) + onChange.Invoke(vector2Action, inputSource, axis, delta); + } + + if (axis != Vector2.zero) + { + if (onAxis != null) + onAxis.Invoke(vector2Action, inputSource, axis, delta); + } + + if (onUpdate != null) + { + onUpdate.Invoke(vector2Action, inputSource, axis, delta); + } + } + + + if (onActiveBindingChange != null && lastActiveBinding != activeBinding) + onActiveBindingChange.Invoke(vector2Action, inputSource, activeBinding); + + if (onActiveChange != null && lastActive != active) + onActiveChange.Invoke(vector2Action, inputSource, activeBinding); + } + } + + public interface ISteamVR_Action_Vector2 : ISteamVR_Action_In_Source + { + /// The current float value of the action. + /// Note: Will only return non-zero if the action is also active. + Vector2 axis { get; } + + /// The float value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + Vector2 lastAxis { get; } + + /// The float value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + Vector2 delta { get; } + + /// The float value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + Vector2 lastDelta { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs.meta new file mode 100644 index 00000000..b60cec9f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector2.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 31ab55ded67f66140977a544d93962ab +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs new file mode 100644 index 00000000..be303c81 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs @@ -0,0 +1,361 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +namespace Valve.VR +{ + [Serializable] + /// + /// An analog action with three values generally from -1 to 1. Also provides a delta since the last update. + /// + public class SteamVR_Action_Vector3 : SteamVR_Action_In, ISteamVR_Action_Vector3, ISerializationCallbackReceiver + { + public delegate void AxisHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta); + public delegate void ActiveChangeHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta); + public delegate void UpdateHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta); + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the axis changes by more than the specified changeTolerance + public event ChangeHandler onChange + { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event fires whenever the action is updated + public event UpdateHandler onUpdate + { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] This event will fire whenever the Vector3 value of the action is non-zero + public event AxisHandler onAxis + { add { sourceMap[SteamVR_Input_Sources.Any].onAxis += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onAxis -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state (ActionSet active and binding active) changes + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] Event fires when the active state of the binding changes + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + + /// [Shortcut to: SteamVR_Input_Sources.Any] The current Vector3 value of the action. + /// Note: Will only return non-zero if the action is also active. + public Vector3 axis { get { return sourceMap[SteamVR_Input_Sources.Any].axis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector3 value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector3 lastAxis { get { return sourceMap[SteamVR_Input_Sources.Any].lastAxis; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector3 value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector3 delta { get { return sourceMap[SteamVR_Input_Sources.Any].delta; } } + + /// [Shortcut to: SteamVR_Input_Sources.Any] The Vector3 value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public Vector3 lastDelta { get { return sourceMap[SteamVR_Input_Sources.Any].lastDelta; } } + + + public SteamVR_Action_Vector3() { } + + + /// The current Vector3 value of the action + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].axis; + } + + /// The Vector3 value difference between this update and the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].delta; + } + + /// The Vector3 value of the action from the previous update. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLastAxis(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastAxis; + } + + /// The Vector3 value difference between the previous update and update before that. + /// The device you would like to get data from. Any if the action is not device specific. + public Vector3 GetLastAxisDelta(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].lastDelta; + } + + /// Executes a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the active state of this action (with the specified inputSource) changes. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling; + } + + /// Executes a function when the axis changes by more than the specified changeTolerance + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnChangeListener(ChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive on change events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnChangeListener(ChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onChange -= functionToStopCalling; + } + + /// Executes a function when the state of this action (with the specified inputSource) is updated. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnUpdateListener(UpdateHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onUpdate -= functionToStopCalling; + } + + /// Executes a function when the Vector3 value of the action is non-zero. + /// A local function that receives the boolean action who's state has changed, the corresponding input source, and the new value + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnAxisListener(AxisHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnAxisListener(AxisHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onAxis -= functionToStopCalling; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + } + + public class SteamVR_Action_Vector3_Source_Map : SteamVR_Action_In_Source_Map + { + } + + public class SteamVR_Action_Vector3_Source : SteamVR_Action_In_Source, ISteamVR_Action_Vector3 + { + protected static uint actionData_size = 0; + + /// The amount the axis needs to change before a change is detected + public float changeTolerance = Mathf.Epsilon; + + /// Event fires when the value of the action is non-zero + public event SteamVR_Action_Vector3.AxisHandler onAxis; + + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Vector3.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Vector3.ActiveChangeHandler onActiveBindingChange; + + /// This event fires whenever the axis changes by more than the specified changeTolerance + public event SteamVR_Action_Vector3.ChangeHandler onChange; + + /// Event fires when the action is updated + public event SteamVR_Action_Vector3.UpdateHandler onUpdate; + + + /// The current Vector3 value of the action. + /// Note: Will only return non-zero if the action is also active. + public Vector3 axis { get; protected set; } + + /// The Vector3 value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector3 lastAxis { get; protected set; } + + /// The Vector3 value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + public Vector3 delta { get; protected set; } + + /// The Vector3 value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + public Vector3 lastDelta { get; protected set; } + + /// If the Vector3 value of this action has changed more than the changeTolerance since the last update + public override bool changed { get; protected set; } + + /// If the Vector3 value of this action has changed more than the changeTolerance between the previous update and the update before that + public override bool lastChanged { get; protected set; } + + /// The handle to the origin of the component that was used to update the value for this action + public override ulong activeOrigin + { + get + { + if (active) + return actionData.activeOrigin; + + return 0; + } + } + + /// The handle to the origin of the component that was used to update the value for this action (for the previous update) + public override ulong lastActiveOrigin { get { return lastActionData.activeOrigin; } } + + /// Returns true if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } } + + /// Returns true if the action is bound + public override bool activeBinding { get { return actionData.bActive; } } + + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public override bool lastActiveBinding { get { return lastActionData.bActive; } } + + + protected InputAnalogActionData_t actionData = new InputAnalogActionData_t(); + protected InputAnalogActionData_t lastActionData = new InputAnalogActionData_t(); + + protected SteamVR_Action_Vector3 vector3Action; + + /// + /// [Should not be called by user code] Sets up the internals of the action source before SteamVR has been initialized. + /// + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + vector3Action = (SteamVR_Action_Vector3)wrappingAction; + } + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, the action data size, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + if (actionData_size == 0) + actionData_size = (uint)Marshal.SizeOf(typeof(InputAnalogActionData_t)); + } + + /// [Should not be called by user code] + /// Updates the data for this action and this input source. Sends related events. + /// + public override void UpdateValue() + { + lastActionData = actionData; + lastActive = active; + lastAxis = axis; + lastDelta = delta; + + EVRInputError err = OpenVR.Input.GetAnalogActionData(handle, ref actionData, actionData_size, SteamVR_Input_Source.GetHandle(inputSource)); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetAnalogActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString()); + + updateTime = Time.realtimeSinceStartup; + axis = new Vector3(actionData.x, actionData.y, actionData.z); + delta = new Vector3(actionData.deltaX, actionData.deltaY, actionData.deltaZ); + + changed = false; + + if (active) + { + if (delta.magnitude > changeTolerance) + { + changed = true; + changedTime = Time.realtimeSinceStartup + actionData.fUpdateTime; //fUpdateTime is the time from the time the action was called that the action changed + + if (onChange != null) + onChange.Invoke(vector3Action, inputSource, axis, delta); + } + + if (axis != Vector3.zero) + { + if (onAxis != null) + onAxis.Invoke(vector3Action, inputSource, axis, delta); + } + + if (onUpdate != null) + { + onUpdate.Invoke(vector3Action, inputSource, axis, delta); + } + } + + + if (onActiveBindingChange != null && lastActiveBinding != activeBinding) + onActiveBindingChange.Invoke(vector3Action, inputSource, activeBinding); + + if (onActiveChange != null && lastActive != active) + onActiveChange.Invoke(vector3Action, inputSource, activeBinding); + } + } + + /// + /// Boolean actions are either true or false. There is an onStateUp and onStateDown event for the rising and falling edge. + /// + public interface ISteamVR_Action_Vector3 : ISteamVR_Action_In_Source + { + /// The current float value of the action. + /// Note: Will only return non-zero if the action is also active. + Vector3 axis { get; } + + /// The float value of the action from the previous update. + /// Note: Will only return non-zero if the action is also active. + Vector3 lastAxis { get; } + + /// The float value difference between this update and the previous update. + /// Note: Will only return non-zero if the action is also active. + Vector3 delta { get; } + + /// The float value difference between the previous update and update before that. + /// Note: Will only return non-zero if the action is also active. + Vector3 lastDelta { get; } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs.meta new file mode 100644 index 00000000..e42b9cea --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vector3.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f0d3d2010d570484eb65e1062a1b0e8e +timeCreated: 1544852183 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs new file mode 100644 index 00000000..a26c7e2e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs @@ -0,0 +1,232 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Runtime.InteropServices; +using System.Collections.Generic; + +#pragma warning disable 0067 + +namespace Valve.VR +{ + [Serializable] + /// + /// Vibration actions are used to trigger haptic feedback in vr controllers. + /// + public class SteamVR_Action_Vibration : SteamVR_Action_Out, ISerializationCallbackReceiver + { + public delegate void ActiveChangeHandler(SteamVR_Action_Vibration fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ExecuteHandler(SteamVR_Action_Vibration fromAction, SteamVR_Input_Sources fromSource, float secondsFromNow, float durationSeconds, float frequency, float amplitude); + + /// [SteamVR_Input_Sources.Any] This event fires whenever a change happens in the action + public event ActiveChangeHandler onActiveChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } } + + /// [SteamVR_Input_Sources.Any] This event fires whenever a change happens in the action + public event ActiveChangeHandler onActiveBindingChange + { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } } + + /// [SteamVR_Input_Sources.Any] This event fires whenever this action is executed + public event ExecuteHandler onExecute + { add { sourceMap[SteamVR_Input_Sources.Any].onExecute += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onExecute -= value; } } + + + public SteamVR_Action_Vibration() { } + + + /// + /// Trigger the haptics at a certain time for a certain length + /// + /// How long from the current time to execute the action (in seconds - can be 0) + /// How long the haptic action should last (in seconds) + /// How often the haptic motor should bounce (0 - 320 in hz. The lower end being more useful) + /// How intense the haptic action should be (0 - 1) + /// The device you would like to execute the haptic action. Any if the action is not device specific. + public void Execute(float secondsFromNow, float durationSeconds, float frequency, float amplitude, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].Execute(secondsFromNow, durationSeconds, frequency, amplitude); + } + + + /// Executes a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange += functionToCall; + } + + /// Stops executing a function when the *functional* active state of this action (with the specified inputSource) changes. + /// This happens when the action is bound or unbound, or when the ActionSet changes state. + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveChange -= functionToStopCalling; + } + + /// Executes a function when the active state of this action (with the specified inputSource) changes. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling; + } + + /// Executes a function when the execute method of this action (with the specified inputSource) is called. This happens when the action is bound or unbound + /// A local function that receives the boolean action who's active state changes and the corresponding input source + /// The device you would like to get data from. Any if the action is not device specific. + public void AddOnExecuteListener(ExecuteHandler functionToCall, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onExecute += functionToCall; + } + + /// Stops executing the function setup by the corresponding AddListener + /// The local function that you've setup to receive update events + /// The device you would like to get data from. Any if the action is not device specific. + public void RemoveOnExecuteListener(ExecuteHandler functionToStopCalling, SteamVR_Input_Sources inputSource) + { + sourceMap[inputSource].onExecute -= functionToStopCalling; + } + + /// + /// Returns the last time this action was executed + /// + /// The device you would like to get data from. Any if the action is not device specific. + public override float GetTimeLastChanged(SteamVR_Input_Sources inputSource) + { + return sourceMap[inputSource].timeLastExecuted; + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + InitAfterDeserialize(); + } + + public override bool IsUpdating(SteamVR_Input_Sources inputSource) + { + return sourceMap.IsUpdating(inputSource); + } + } + + public class SteamVR_Action_Vibration_Source_Map : SteamVR_Action_Source_Map + { + public bool IsUpdating(SteamVR_Input_Sources inputSource) + { + int sourceIndex = (int)inputSource; + + return sources[sourceIndex].timeLastExecuted != 0; + } + } + + public class SteamVR_Action_Vibration_Source : SteamVR_Action_Out_Source + { + /// Event fires when the active state (ActionSet active and binding active) changes + public event SteamVR_Action_Vibration.ActiveChangeHandler onActiveChange; + + /// Event fires when the active state of the binding changes + public event SteamVR_Action_Vibration.ActiveChangeHandler onActiveBindingChange; + + /// Event fires whenever this action is executed + public event SteamVR_Action_Vibration.ExecuteHandler onExecute; + + //todo: fix the active state of out actions + /// Returns true if this action is bound and the ActionSet is active + public override bool active { get { return activeBinding && setActive; } } + + /// Returns true if the action is bound + public override bool activeBinding { get { return true; } } + + + /// Returns true if the action was bound and the ActionSet was active during the previous update + public override bool lastActive { get; protected set; } + + /// Returns true if the action was bound during the previous update + public override bool lastActiveBinding { get { return true; } } + + /// The last time the execute method was called on this action + public float timeLastExecuted { get; protected set; } + + protected SteamVR_Action_Vibration vibrationAction; + + + /// + /// [Should not be called by user code] + /// Initializes the handle for the inputSource, and any other related SteamVR data. + /// + public override void Initialize() + { + base.Initialize(); + + lastActive = true; + } + + public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource) + { + base.Preinitialize(wrappingAction, forInputSource); + + vibrationAction = (SteamVR_Action_Vibration)wrappingAction; + } + + + /// + /// Trigger the haptics at a certain time for a certain length + /// + /// How long from the current time to execute the action (in seconds - can be 0) + /// How long the haptic action should last (in seconds) + /// How often the haptic motor should bounce (0 - 320 in hz. The lower end being more useful) + /// How intense the haptic action should be (0 - 1) + /// The device you would like to execute the haptic action. Any if the action is not device specific. + public void Execute(float secondsFromNow, float durationSeconds, float frequency, float amplitude) + { + if (SteamVR_Input.isStartupFrame) + return; + + timeLastExecuted = Time.realtimeSinceStartup; + + EVRInputError err = OpenVR.Input.TriggerHapticVibrationAction(handle, secondsFromNow, durationSeconds, frequency, amplitude, inputSourceHandle); + + //Debug.Log(string.Format("[{5}: haptic] secondsFromNow({0}), durationSeconds({1}), frequency({2}), amplitude({3}), inputSource({4})", secondsFromNow, durationSeconds, frequency, amplitude, inputSource, this.GetShortName())); + + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] TriggerHapticVibrationAction (" + fullPath + ") error: " + err.ToString() + " handle: " + handle.ToString()); + + if (onExecute != null) + onExecute.Invoke(vibrationAction, inputSource, secondsFromNow, durationSeconds, frequency, amplitude); + } + } + + + /// + /// Vibration actions are used to trigger haptic feedback in vr controllers. + /// + public interface ISteamVR_Action_Vibration : ISteamVR_Action_Out + { + /// + /// Trigger the haptics at a certain time for a certain length + /// + /// How long from the current time to execute the action (in seconds - can be 0) + /// How long the haptic action should last (in seconds) + /// How often the haptic motor should bounce (0 - 320 in hz. The lower end being more useful) + /// How intense the haptic action should be (0 - 1) + /// The device you would like to execute the haptic action. Any if the action is not device specific. + void Execute(float secondsFromNow, float durationSeconds, float frequency, float amplitude, SteamVR_Input_Sources inputSource); + } +} + +#pragma warning restore 0067 \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs.meta new file mode 100644 index 00000000..f36dedea --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Action_Vibration.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 48b01ecd7f9020044bab37ea4ac8fca3 +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs new file mode 100644 index 00000000..7e429888 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs @@ -0,0 +1,41 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; + +namespace Valve.VR +{ + /// + /// Automatically activates an action set on Start() and deactivates the set on OnDestroy(). Optionally deactivating all other sets as well. + /// + public class SteamVR_ActivateActionSetOnLoad : MonoBehaviour + { + public SteamVR_ActionSet actionSet = SteamVR_Input.GetActionSet("default"); + + public SteamVR_Input_Sources forSources = SteamVR_Input_Sources.Any; + + public bool disableAllOtherActionSets = false; + + public bool activateOnStart = true; + public bool deactivateOnDestroy = true; + + + private void Start() + { + if (actionSet != null && activateOnStart) + { + //Debug.Log(string.Format("[SteamVR] Activating {0} action set.", actionSet.fullPath)); + actionSet.Activate(forSources, 0, disableAllOtherActionSets); + } + } + + private void OnDestroy() + { + if (actionSet != null && deactivateOnDestroy) + { + //Debug.Log(string.Format("[SteamVR] Deactivating {0} action set.", actionSet.fullPath)); + actionSet.Deactivate(forSources); + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs.meta new file mode 100644 index 00000000..5a4756ae --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_ActivateActionSetOnLoad.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27991c206a5e66147bb8ee3ef31c8bac +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs new file mode 100644 index 00000000..a42d6174 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Linq; +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System.Text; + +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR +{ + /// + /// This component simplifies using boolean actions. + /// Provides editor accessible events: OnPress, OnPressDown, OnPressUp, OnChange, and OnUpdate. + /// Provides script accessible events: OnPressEvent, OnPressDownEvent, OnPressUpEvent, OnChangeEvent, and OnUpdateEvent. + /// + public class SteamVR_Behaviour_Boolean : MonoBehaviour + { + [Tooltip("The SteamVR boolean action that this component should use")] + public SteamVR_Action_Boolean booleanAction; + + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + /// This UnityEvent fires whenever a change happens in the action + public SteamVR_Behaviour_BooleanEvent onChange; + + /// This C# event fires whenever a change happens in the action + public event ChangeHandler onChangeEvent; + + /// This UnityEvent fires whenever the action is updated + public SteamVR_Behaviour_BooleanEvent onUpdate; + + /// This C# event fires whenever the action is updated + public event UpdateHandler onUpdateEvent; + + /// This UnityEvent will fire whenever the boolean action is true and gets updated + public SteamVR_Behaviour_BooleanEvent onPress; + + /// This C# event will fire whenever the boolean action is true and gets updated + public event StateHandler onPressEvent; + + /// This UnityEvent will fire whenever the boolean action has changed from false to true in the last update + public SteamVR_Behaviour_BooleanEvent onPressDown; + + /// This C# event will fire whenever the boolean action has changed from false to true in the last update + public event StateDownHandler onPressDownEvent; + + /// This UnityEvent will fire whenever the boolean action has changed from true to false in the last update + public SteamVR_Behaviour_BooleanEvent onPressUp; + + /// This C# event will fire whenever the boolean action has changed from true to false in the last update + public event StateUpHandler onPressUpEvent; + + /// Returns true if this action is currently bound and its action set is active + public bool isActive { get { return booleanAction[inputSource].active; } } + + /// Returns the action set that this action is in. + public SteamVR_ActionSet actionSet { get { if (booleanAction != null) return booleanAction.actionSet; else return null; } } + + + + protected virtual void OnEnable() + { + if (booleanAction == null) + { + Debug.LogError("[SteamVR] Boolean action not set.", this); + return; + } + + AddHandlers(); + } + + protected virtual void OnDisable() + { + RemoveHandlers(); + } + + protected void AddHandlers() + { + booleanAction[inputSource].onUpdate += SteamVR_Behaviour_Boolean_OnUpdate; + booleanAction[inputSource].onChange += SteamVR_Behaviour_Boolean_OnChange; + booleanAction[inputSource].onState += SteamVR_Behaviour_Boolean_OnState; + booleanAction[inputSource].onStateDown += SteamVR_Behaviour_Boolean_OnStateDown; + booleanAction[inputSource].onStateUp += SteamVR_Behaviour_Boolean_OnStateUp; + } + + protected void RemoveHandlers() + { + + if (booleanAction != null) + { + booleanAction[inputSource].onUpdate -= SteamVR_Behaviour_Boolean_OnUpdate; + booleanAction[inputSource].onChange -= SteamVR_Behaviour_Boolean_OnChange; + booleanAction[inputSource].onState -= SteamVR_Behaviour_Boolean_OnState; + booleanAction[inputSource].onStateDown -= SteamVR_Behaviour_Boolean_OnStateDown; + booleanAction[inputSource].onStateUp -= SteamVR_Behaviour_Boolean_OnStateUp; + } + } + + private void SteamVR_Behaviour_Boolean_OnStateUp(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource) + { + if (onPressUp != null) + { + onPressUp.Invoke(this, fromSource, false); + } + + if (onPressUpEvent != null) + { + onPressUpEvent.Invoke(this, fromSource); + } + } + + private void SteamVR_Behaviour_Boolean_OnStateDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource) + { + if (onPressDown != null) + { + onPressDown.Invoke(this, fromSource, true); + } + + if (onPressDownEvent != null) + { + onPressDownEvent.Invoke(this, fromSource); + } + } + + private void SteamVR_Behaviour_Boolean_OnState(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource) + { + if (onPress != null) + { + onPress.Invoke(this, fromSource, true); + } + + if (onPressEvent != null) + { + onPressEvent.Invoke(this, fromSource); + } + } + + private void SteamVR_Behaviour_Boolean_OnUpdate(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState) + { + if (onUpdate != null) + { + onUpdate.Invoke(this, fromSource, newState); + } + + if (onUpdateEvent != null) + { + onUpdateEvent.Invoke(this, fromSource, newState); + } + } + + private void SteamVR_Behaviour_Boolean_OnChange(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState) + { + if (onChange != null) + { + onChange.Invoke(this, fromSource, newState); + } + + if (onChangeEvent != null) + { + onChangeEvent.Invoke(this, fromSource, newState); + } + } + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + if (booleanAction != null) + return booleanAction.GetLocalizedOriginPart(inputSource, localizedParts); + return null; + } + + public delegate void StateDownHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void StateUpHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void StateHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource); + public delegate void ActiveChangeHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState); + public delegate void UpdateHandler(SteamVR_Behaviour_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs.meta new file mode 100644 index 00000000..fed8e64e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Boolean.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 16a9b39235339104889bf8e9178fc630 +timeCreated: 1544852184 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs new file mode 100644 index 00000000..091218a0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs @@ -0,0 +1,263 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Threading; +using UnityEngine; +using UnityEngine.Events; +using Valve.VR; + +namespace Valve.VR +{ + /// + /// This component simplifies the use of Pose actions. Adding it to a gameobject will auto set that transform's position and rotation every update to match the pose. + /// Advanced velocity estimation is handled through a buffer of the last 30 updates. + /// + public class SteamVR_Behaviour_Pose : MonoBehaviour + { + public SteamVR_Action_Pose poseAction = SteamVR_Input.GetAction("Pose"); + + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + [Tooltip("If not set, relative to parent")] + public Transform origin; + + /// Returns whether or not the current pose is in a valid state + public bool isValid { get { return poseAction[inputSource].poseIsValid; } } + + /// Returns whether or not the pose action is bound and able to be updated + public bool isActive { get { return poseAction[inputSource].active; } } + + + /// This Unity event will fire whenever the position or rotation of this transform is updated. + public SteamVR_Behaviour_PoseEvent onTransformUpdated; + + /// This Unity event will fire whenever the position or rotation of this transform is changed. + public SteamVR_Behaviour_PoseEvent onTransformChanged; + + /// This Unity event will fire whenever the device is connected or disconnected + public SteamVR_Behaviour_Pose_ConnectedChangedEvent onConnectedChanged; + + /// This Unity event will fire whenever the device's tracking state changes + public SteamVR_Behaviour_Pose_TrackingChangedEvent onTrackingChanged; + + /// This Unity event will fire whenever the device's deviceIndex changes + public SteamVR_Behaviour_Pose_DeviceIndexChangedEvent onDeviceIndexChanged; + + + /// This C# event will fire whenever the position or rotation of this transform is updated. + public UpdateHandler onTransformUpdatedEvent; + + /// This C# event will fire whenever the position or rotation of this transform is changed. + public ChangeHandler onTransformChangedEvent; + + /// This C# event will fire whenever the device is connected or disconnected + public DeviceConnectedChangeHandler onConnectedChangedEvent; + + /// This C# event will fire whenever the device's tracking state changes + public TrackingChangeHandler onTrackingChangedEvent; + + /// This C# event will fire whenever the device's deviceIndex changes + public DeviceIndexChangedHandler onDeviceIndexChangedEvent; + + + [Tooltip("Can be disabled to stop broadcasting bound device status changes")] + public bool broadcastDeviceChanges = true; + + protected int deviceIndex = -1; + + protected SteamVR_HistoryBuffer historyBuffer = new SteamVR_HistoryBuffer(30); + + + protected virtual void Start() + { + if (poseAction == null) + { + Debug.LogError("[SteamVR] No pose action set for this component", this); + return; + } + + CheckDeviceIndex(); + + if (origin == null) + origin = this.transform.parent; + } + + protected virtual void OnEnable() + { + SteamVR.Initialize(); + + if (poseAction != null) + { + poseAction[inputSource].onUpdate += SteamVR_Behaviour_Pose_OnUpdate; + poseAction[inputSource].onDeviceConnectedChanged += OnDeviceConnectedChanged; + poseAction[inputSource].onTrackingChanged += OnTrackingChanged; + poseAction[inputSource].onChange += SteamVR_Behaviour_Pose_OnChange; + } + } + + protected virtual void OnDisable() + { + if (poseAction != null) + { + poseAction[inputSource].onUpdate -= SteamVR_Behaviour_Pose_OnUpdate; + poseAction[inputSource].onDeviceConnectedChanged -= OnDeviceConnectedChanged; + poseAction[inputSource].onTrackingChanged -= OnTrackingChanged; + poseAction[inputSource].onChange -= SteamVR_Behaviour_Pose_OnChange; + } + + historyBuffer.Clear(); + } + + private void SteamVR_Behaviour_Pose_OnUpdate(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource) + { + UpdateHistoryBuffer(); + + UpdateTransform(); + + if (onTransformUpdated != null) + onTransformUpdated.Invoke(this, inputSource); + if (onTransformUpdatedEvent != null) + onTransformUpdatedEvent.Invoke(this, inputSource); + } + protected virtual void UpdateTransform() + { + CheckDeviceIndex(); + + if (origin != null) + { + transform.position = origin.transform.TransformPoint(poseAction[inputSource].localPosition); + transform.rotation = origin.rotation * poseAction[inputSource].localRotation; + } + else + { + transform.localPosition = poseAction[inputSource].localPosition; + transform.localRotation = poseAction[inputSource].localRotation; + } + } + + private void SteamVR_Behaviour_Pose_OnChange(SteamVR_Action_Pose fromAction, SteamVR_Input_Sources fromSource) + { + if (onTransformChanged != null) + onTransformChanged.Invoke(this, fromSource); + if (onTransformChangedEvent != null) + onTransformChangedEvent.Invoke(this, fromSource); + } + + protected virtual void OnDeviceConnectedChanged(SteamVR_Action_Pose changedAction, SteamVR_Input_Sources changedSource, bool connected) + { + CheckDeviceIndex(); + + if (onConnectedChanged != null) + onConnectedChanged.Invoke(this, inputSource, connected); + if (onConnectedChangedEvent != null) + onConnectedChangedEvent.Invoke(this, inputSource, connected); + } + + protected virtual void OnTrackingChanged(SteamVR_Action_Pose changedAction, SteamVR_Input_Sources changedSource, ETrackingResult trackingChanged) + { + if (onTrackingChanged != null) + onTrackingChanged.Invoke(this, inputSource, trackingChanged); + if (onTrackingChangedEvent != null) + onTrackingChangedEvent.Invoke(this, inputSource, trackingChanged); + } + + protected virtual void CheckDeviceIndex() + { + if (poseAction[inputSource].active && poseAction[inputSource].deviceIsConnected) + { + int currentDeviceIndex = (int)poseAction[inputSource].trackedDeviceIndex; + + if (deviceIndex != currentDeviceIndex) + { + deviceIndex = currentDeviceIndex; + + if (broadcastDeviceChanges) + { + this.gameObject.BroadcastMessage("SetInputSource", inputSource, SendMessageOptions.DontRequireReceiver); + this.gameObject.BroadcastMessage("SetDeviceIndex", deviceIndex, SendMessageOptions.DontRequireReceiver); + } + + if (onDeviceIndexChanged != null) + onDeviceIndexChanged.Invoke(this, inputSource, deviceIndex); + if (onDeviceIndexChangedEvent != null) + onDeviceIndexChangedEvent.Invoke(this, inputSource, deviceIndex); + } + } + } + + /// + /// Returns the device index for the device bound to the pose. + /// + public int GetDeviceIndex() + { + if (deviceIndex == -1) + CheckDeviceIndex(); + + return deviceIndex; + } + + /// Returns the current velocity of the pose (as of the last update) + public Vector3 GetVelocity() + { + return poseAction[inputSource].velocity; + } + + /// Returns the current angular velocity of the pose (as of the last update) + public Vector3 GetAngularVelocity() + { + return poseAction[inputSource].angularVelocity; + } + + /// Returns the velocities of the pose at the time specified. Can predict in the future or return past values. + public bool GetVelocitiesAtTimeOffset(float secondsFromNow, out Vector3 velocity, out Vector3 angularVelocity) + { + return poseAction[inputSource].GetVelocitiesAtTimeOffset(secondsFromNow, out velocity, out angularVelocity); + } + + /// Uses previously recorded values to find the peak speed of the pose and returns the corresponding velocity and angular velocity + public void GetEstimatedPeakVelocities(out Vector3 velocity, out Vector3 angularVelocity) + { + int top = historyBuffer.GetTopVelocity(10, 1); + + historyBuffer.GetAverageVelocities(out velocity, out angularVelocity, 2, top); + } + + protected int lastFrameUpdated; + protected void UpdateHistoryBuffer() + { + int currentFrame = Time.frameCount; + if (lastFrameUpdated != currentFrame) + { + historyBuffer.Update(poseAction[inputSource].localPosition, poseAction[inputSource].localRotation, poseAction[inputSource].velocity, poseAction[inputSource].angularVelocity); + lastFrameUpdated = currentFrame; + } + } + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + if (poseAction != null) + return poseAction.GetLocalizedOriginPart(inputSource, localizedParts); + return null; + } + + public delegate void ActiveChangeHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource, bool active); + public delegate void ChangeHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource); + public delegate void UpdateHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource); + public delegate void TrackingChangeHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource, ETrackingResult trackingState); + public delegate void ValidPoseChangeHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource, bool validPose); + public delegate void DeviceConnectedChangeHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource, bool deviceConnected); + public delegate void DeviceIndexChangedHandler(SteamVR_Behaviour_Pose fromAction, SteamVR_Input_Sources fromSource, int newDeviceIndex); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs.meta new file mode 100644 index 00000000..610993ba --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9a5fb0ca93b55ef4b8d54b512b103341 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31600 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs new file mode 100644 index 00000000..fbf67a9b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs @@ -0,0 +1,145 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEngine; +using UnityEngine.Events; + + +namespace Valve.VR +{ + /// + /// SteamVR_Behaviour_Single simplifies the use of single actions. It gives an event to subscribe to for when the action has changed. + /// + public class SteamVR_Behaviour_Single : MonoBehaviour + { + /// The single action to get data from. + public SteamVR_Action_Single singleAction; + + /// The device this action applies to. Any if the action is not device specific. + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + /// Unity event that Fires whenever the action's value has changed since the last update. + [Tooltip("Fires whenever the action's value has changed since the last update.")] + public SteamVR_Behaviour_SingleEvent onChange; + + /// Unity event that Fires whenever the action's value has been updated + [Tooltip("Fires whenever the action's value has been updated.")] + public SteamVR_Behaviour_SingleEvent onUpdate; + + /// Unity event that Fires whenever the action's value has been updated and is non-zero + [Tooltip("Fires whenever the action's value has been updated and is non-zero.")] + public SteamVR_Behaviour_SingleEvent onAxis; + + /// C# event that fires whenever the action's value has changed since the last update. + public ChangeHandler onChangeEvent; + + /// C# event that fires whenever the action's value has been updated + public UpdateHandler onUpdateEvent; + + /// C# event that fires whenever the action's value has been updated and is non-zero + public AxisHandler onAxisEvent; + + /// Returns whether this action is bound and the action set is active + public bool isActive { get { return singleAction.GetActive(inputSource); } } + + protected virtual void OnEnable() + { + if (singleAction == null) + { + Debug.LogError("[SteamVR] Single action not set.", this); + return; + } + + AddHandlers(); + } + + protected virtual void OnDisable() + { + RemoveHandlers(); + } + + protected void AddHandlers() + { + singleAction[inputSource].onUpdate += SteamVR_Behaviour_Single_OnUpdate; + singleAction[inputSource].onChange += SteamVR_Behaviour_Single_OnChange; + singleAction[inputSource].onAxis += SteamVR_Behaviour_Single_OnAxis; + } + + protected void RemoveHandlers() + { + if (singleAction != null) + { + singleAction[inputSource].onUpdate -= SteamVR_Behaviour_Single_OnUpdate; + singleAction[inputSource].onChange -= SteamVR_Behaviour_Single_OnChange; + singleAction[inputSource].onAxis -= SteamVR_Behaviour_Single_OnAxis; + } + } + + private void SteamVR_Behaviour_Single_OnUpdate(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta) + { + if (onUpdate != null) + { + onUpdate.Invoke(this, fromSource, newAxis, newDelta); + } + + if (onUpdateEvent != null) + { + onUpdateEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Single_OnChange(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta) + { + if (onChange != null) + { + onChange.Invoke(this, fromSource, newAxis, newDelta); + } + + if (onChangeEvent != null) + { + onChangeEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Single_OnAxis(SteamVR_Action_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta) + { + if (onAxis != null) + { + onAxis.Invoke(this, fromSource, newAxis, newDelta); + } + + if (onAxisEvent != null) + { + onAxisEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + if (singleAction != null) + return singleAction.GetLocalizedOriginPart(inputSource, localizedParts); + return null; + } + + public delegate void AxisHandler(SteamVR_Behaviour_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + public delegate void ChangeHandler(SteamVR_Behaviour_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + public delegate void UpdateHandler(SteamVR_Behaviour_Single fromAction, SteamVR_Input_Sources fromSource, float newAxis, float newDelta); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs.meta new file mode 100644 index 00000000..b75742bf --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Single.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8be882076514bc846a3ee15c689d0ac4 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs new file mode 100644 index 00000000..66242880 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs @@ -0,0 +1,1033 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections; +using UnityEngine; +using UnityEngine.Events; +using Valve.VR; + +namespace Valve.VR +{ + public class SteamVR_Behaviour_Skeleton : MonoBehaviour + { + [Tooltip("If not set, will try to auto assign this based on 'Skeleton' + inputSource")] + /// The action this component will use to update the model. Must be a Skeleton type action. + public SteamVR_Action_Skeleton skeletonAction; + + /// The device this action should apply to. Any if the action is not device specific. + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + /// The range of motion you'd like the hand to move in. With controller is the best estimate of the fingers wrapped around a controller. Without is from a flat hand to a fist. + [Tooltip("The range of motion you'd like the hand to move in. With controller is the best estimate of the fingers wrapped around a controller. Without is from a flat hand to a fist.")] + public EVRSkeletalMotionRange rangeOfMotion = EVRSkeletalMotionRange.WithoutController; + + /// The root Transform of the skeleton. Needs to have a child (wrist) then wrist should have children in the order thumb, index, middle, ring, pinky + [Tooltip("This needs to be in the order of: root -> wrist -> thumb, index, middle, ring, pinky")] + public Transform skeletonRoot; + + /// The transform this transform should be relative to + [Tooltip("If not set, relative to parent")] + public Transform origin; + + /// Whether or not to update this transform's position and rotation inline with the skeleton transforms or if this is handled in another script + [Tooltip("Set to true if you want this script to update its position and rotation. False if this will be handled elsewhere")] + public bool updatePose = true; + + /// Check this to not set the positions of the bones. This is helpful for differently scaled skeletons. + [Tooltip("Check this to not set the positions of the bones. This is helpful for differently scaled skeletons.")] + public bool onlySetRotations = false; + + /// + /// How much of a blend to apply to the transform positions and rotations. + /// Set to 0 for the transform orientation to be set by an animation. + /// Set to 1 for the transform orientation to be set by the skeleton action. + /// + [Range(0, 1)] + [Tooltip("Modify this to blend between animations setup on the hand")] + public float skeletonBlend = 1f; + + /// This Unity event will fire whenever the position or rotation of the bones are updated. + public SteamVR_Behaviour_SkeletonEvent onBoneTransformsUpdated; + + /// This Unity event will fire whenever the position or rotation of this transform is updated. + public SteamVR_Behaviour_SkeletonEvent onTransformUpdated; + + /// This Unity event will fire whenever the position or rotation of this transform is changed. + public SteamVR_Behaviour_SkeletonEvent onTransformChanged; + + /// This Unity event will fire whenever the device is connected or disconnected + public SteamVR_Behaviour_Skeleton_ConnectedChangedEvent onConnectedChanged; + + /// This Unity event will fire whenever the device's tracking state changes + public SteamVR_Behaviour_Skeleton_TrackingChangedEvent onTrackingChanged; + + + /// This C# event will fire whenever the position or rotation of this transform is updated. + public UpdateHandler onBoneTransformsUpdatedEvent; + + /// This C# event will fire whenever the position or rotation of this transform is updated. + public UpdateHandler onTransformUpdatedEvent; + + /// This C# event will fire whenever the position or rotation of this transform is changed. + public ChangeHandler onTransformChangedEvent; + + /// This C# event will fire whenever the device is connected or disconnected + public DeviceConnectedChangeHandler onConnectedChangedEvent; + + /// This C# event will fire whenever the device's tracking state changes + public TrackingChangeHandler onTrackingChangedEvent; + + /// Can be set to mirror the bone data across the x axis + [Tooltip("Is this rendermodel a mirror of another one?")] + public MirrorType mirroring; + + + + [Header("No Skeleton - Fallback")] + + + [Tooltip("The fallback SkeletonPoser to drive hand animation when no skeleton data is available")] + /// The fallback SkeletonPoser to drive hand animation when no skeleton data is available + public SteamVR_Skeleton_Poser fallbackPoser; + + [Tooltip("The fallback action to drive finger curl values when no skeleton data is available")] + /// The fallback SkeletonPoser to drive hand animation when no skeleton data is available + public SteamVR_Action_Single fallbackCurlAction; + + /// + /// Is the skeleton action bound? + /// + public bool skeletonAvailable { get { return skeletonAction.activeBinding; } } + + + + + + + + /// The current skeletonPoser we're getting pose data from + protected SteamVR_Skeleton_Poser blendPoser; + /// The current pose snapshot + protected SteamVR_Skeleton_PoseSnapshot blendSnapshot = null; + + + /// Returns whether this action is bound and the action set is active + public bool isActive { get { return skeletonAction.GetActive(); } } + + + /// An array of five 0-1 values representing how curled a finger is. 0 being straight, 1 being fully curled. 0 being thumb, 4 being pinky + public float[] fingerCurls + { + get + { + if (skeletonAvailable) + { + return skeletonAction.GetFingerCurls(); + } + else + { + //fallback, return array where each finger curl is just the fallback curl action value + float[] curls = new float[5]; + for (int i = 0; i < 5; i++) + { + curls[i] = fallbackCurlAction.GetAxis(inputSource); + } + return curls; + } + } + } + + /// An 0-1 value representing how curled a finger is. 0 being straight, 1 being fully curled. + public float thumbCurl + { + get + { + if (skeletonAvailable) + return skeletonAction.GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum.thumb); + else + return fallbackCurlAction.GetAxis(inputSource); + } + } + + /// An 0-1 value representing how curled a finger is. 0 being straight, 1 being fully curled. + public float indexCurl + { + get + { + if (skeletonAvailable) + return skeletonAction.GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum.index); + else + return fallbackCurlAction.GetAxis(inputSource); + } + } + + /// An 0-1 value representing how curled a finger is. 0 being straight, 1 being fully curled. + public float middleCurl + { + get + { + if (skeletonAvailable) + return skeletonAction.GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum.middle); + else + return fallbackCurlAction.GetAxis(inputSource); + } + } + + /// An 0-1 value representing how curled a finger is. 0 being straight, 1 being fully curled. + public float ringCurl + { + get + { + if (skeletonAvailable) + return skeletonAction.GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum.ring); + else + return fallbackCurlAction.GetAxis(inputSource); + } + } + + /// An 0-1 value representing how curled a finger is. 0 being straight, 1 being fully curled. + public float pinkyCurl + { + get + { + if (skeletonAvailable) + return skeletonAction.GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum.pinky); + else + return fallbackCurlAction.GetAxis(inputSource); + } + } + + + + public Transform root { get { return bones[SteamVR_Skeleton_JointIndexes.root]; } } + public Transform wrist { get { return bones[SteamVR_Skeleton_JointIndexes.wrist]; } } + public Transform indexMetacarpal { get { return bones[SteamVR_Skeleton_JointIndexes.indexMetacarpal]; } } + public Transform indexProximal { get { return bones[SteamVR_Skeleton_JointIndexes.indexProximal]; } } + public Transform indexMiddle { get { return bones[SteamVR_Skeleton_JointIndexes.indexMiddle]; } } + public Transform indexDistal { get { return bones[SteamVR_Skeleton_JointIndexes.indexDistal]; } } + public Transform indexTip { get { return bones[SteamVR_Skeleton_JointIndexes.indexTip]; } } + public Transform middleMetacarpal { get { return bones[SteamVR_Skeleton_JointIndexes.middleMetacarpal]; } } + public Transform middleProximal { get { return bones[SteamVR_Skeleton_JointIndexes.middleProximal]; } } + public Transform middleMiddle { get { return bones[SteamVR_Skeleton_JointIndexes.middleMiddle]; } } + public Transform middleDistal { get { return bones[SteamVR_Skeleton_JointIndexes.middleDistal]; } } + public Transform middleTip { get { return bones[SteamVR_Skeleton_JointIndexes.middleTip]; } } + public Transform pinkyMetacarpal { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyMetacarpal]; } } + public Transform pinkyProximal { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyProximal]; } } + public Transform pinkyMiddle { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyMiddle]; } } + public Transform pinkyDistal { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyDistal]; } } + public Transform pinkyTip { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyTip]; } } + public Transform ringMetacarpal { get { return bones[SteamVR_Skeleton_JointIndexes.ringMetacarpal]; } } + public Transform ringProximal { get { return bones[SteamVR_Skeleton_JointIndexes.ringProximal]; } } + public Transform ringMiddle { get { return bones[SteamVR_Skeleton_JointIndexes.ringMiddle]; } } + public Transform ringDistal { get { return bones[SteamVR_Skeleton_JointIndexes.ringDistal]; } } + public Transform ringTip { get { return bones[SteamVR_Skeleton_JointIndexes.ringTip]; } } + public Transform thumbMetacarpal { get { return bones[SteamVR_Skeleton_JointIndexes.thumbMetacarpal]; } } //doesn't exist - mapped to proximal + public Transform thumbProximal { get { return bones[SteamVR_Skeleton_JointIndexes.thumbProximal]; } } + public Transform thumbMiddle { get { return bones[SteamVR_Skeleton_JointIndexes.thumbMiddle]; } } + public Transform thumbDistal { get { return bones[SteamVR_Skeleton_JointIndexes.thumbDistal]; } } + public Transform thumbTip { get { return bones[SteamVR_Skeleton_JointIndexes.thumbTip]; } } + public Transform thumbAux { get { return bones[SteamVR_Skeleton_JointIndexes.thumbAux]; } } + public Transform indexAux { get { return bones[SteamVR_Skeleton_JointIndexes.indexAux]; } } + public Transform middleAux { get { return bones[SteamVR_Skeleton_JointIndexes.middleAux]; } } + public Transform ringAux { get { return bones[SteamVR_Skeleton_JointIndexes.ringAux]; } } + public Transform pinkyAux { get { return bones[SteamVR_Skeleton_JointIndexes.pinkyAux]; } } + + /// An array of all the finger proximal joint transforms + public Transform[] proximals { get; protected set; } + + /// An array of all the finger middle joint transforms + public Transform[] middles { get; protected set; } + + /// An array of all the finger distal joint transforms + public Transform[] distals { get; protected set; } + + /// An array of all the finger tip transforms + public Transform[] tips { get; protected set; } + + /// An array of all the finger aux transforms + public Transform[] auxs { get; protected set; } + + protected Coroutine blendRoutine; + protected Coroutine rangeOfMotionBlendRoutine; + protected Coroutine attachRoutine; + + protected Transform[] bones; + + /// The range of motion that is set temporarily (call ResetTemporaryRangeOfMotion to reset to rangeOfMotion) + protected EVRSkeletalMotionRange? temporaryRangeOfMotion = null; + + /// + /// Get the accuracy level of the skeletal tracking data. + /// * Estimated: Body part location can’t be directly determined by the device. Any skeletal pose provided by the device is estimated based on the active buttons, triggers, joysticks, or other input sensors. Examples include the Vive Controller and gamepads. + /// * Partial: Body part location can be measured directly but with fewer degrees of freedom than the actual body part.Certain body part positions may be unmeasured by the device and estimated from other input data.Examples include Knuckles or gloves that only measure finger curl + /// * Full: Body part location can be measured directly throughout the entire range of motion of the body part.Examples include hi-end mocap systems, or gloves that measure the rotation of each finger segment. + /// + public EVRSkeletalTrackingLevel skeletalTrackingLevel + { + get + { + if (skeletonAvailable) + { + return skeletonAction.skeletalTrackingLevel; + } + else + { + return EVRSkeletalTrackingLevel.VRSkeletalTracking_Estimated; + } + } + } + + /// Returns true if we are in the process of blending the skeletonBlend field (between animation and bone data) + public bool isBlending + { + get + { + return blendRoutine != null; + } + } + + /* + public float predictedSecondsFromNow + { + get + { + return skeletonAction.predictedSecondsFromNow; + } + + set + { + skeletonAction.predictedSecondsFromNow = value; + } + } + */ + public SteamVR_ActionSet actionSet + { + get + { + return skeletonAction.actionSet; + } + } + + public SteamVR_ActionDirections direction + { + get + { + return skeletonAction.direction; + } + } + + protected virtual void Awake() + { + SteamVR.Initialize(); + + AssignBonesArray(); + + proximals = new Transform[] { thumbProximal, indexProximal, middleProximal, ringProximal, pinkyProximal }; + middles = new Transform[] { thumbMiddle, indexMiddle, middleMiddle, ringMiddle, pinkyMiddle }; + distals = new Transform[] { thumbDistal, indexDistal, middleDistal, ringDistal, pinkyDistal }; + tips = new Transform[] { thumbTip, indexTip, middleTip, ringTip, pinkyTip }; + auxs = new Transform[] { thumbAux, indexAux, middleAux, ringAux, pinkyAux }; + + CheckSkeletonAction(); + } + + protected virtual void CheckSkeletonAction() + { + if (skeletonAction == null) + skeletonAction = SteamVR_Input.GetAction("Skeleton" + inputSource.ToString()); + } + + protected virtual void AssignBonesArray() + { + bones = skeletonRoot.GetComponentsInChildren(); + } + + protected virtual void OnEnable() + { + CheckSkeletonAction(); + SteamVR_Input.onSkeletonsUpdated += SteamVR_Input_OnSkeletonsUpdated; + + if (skeletonAction != null) + { + skeletonAction.onDeviceConnectedChanged += OnDeviceConnectedChanged; + skeletonAction.onTrackingChanged += OnTrackingChanged; + } + } + + protected virtual void OnDisable() + { + SteamVR_Input.onSkeletonsUpdated -= SteamVR_Input_OnSkeletonsUpdated; + + if (skeletonAction != null) + { + skeletonAction.onDeviceConnectedChanged -= OnDeviceConnectedChanged; + skeletonAction.onTrackingChanged -= OnTrackingChanged; + } + } + + private void OnDeviceConnectedChanged(SteamVR_Action_Skeleton fromAction, bool deviceConnected) + { + if (onConnectedChanged != null) + onConnectedChanged.Invoke(this, inputSource, deviceConnected); + if (onConnectedChangedEvent != null) + onConnectedChangedEvent.Invoke(this, inputSource, deviceConnected); + } + + private void OnTrackingChanged(SteamVR_Action_Skeleton fromAction, ETrackingResult trackingState) + { + if (onTrackingChanged != null) + onTrackingChanged.Invoke(this, inputSource, trackingState); + if (onTrackingChangedEvent != null) + onTrackingChangedEvent.Invoke(this, inputSource, trackingState); + } + + protected virtual void SteamVR_Input_OnSkeletonsUpdated(bool skipSendingEvents) + { + UpdateSkeleton(); + } + + protected virtual void UpdateSkeleton() + { + if (skeletonAction == null) + return; + + if (updatePose) + UpdatePose(); + + if (blendPoser != null && skeletonBlend < 1) + { + if (blendSnapshot == null) blendSnapshot = blendPoser.GetBlendedPose(this); + blendSnapshot = blendPoser.GetBlendedPose(this); + } + + if (rangeOfMotionBlendRoutine == null) + { + if (temporaryRangeOfMotion != null) + skeletonAction.SetRangeOfMotion(temporaryRangeOfMotion.Value); + else + skeletonAction.SetRangeOfMotion(rangeOfMotion); //this may be a frame behind + + UpdateSkeletonTransforms(); + } + } + + /// + /// Sets a temporary range of motion for this action that can easily be reset (using ResetTemporaryRangeOfMotion). + /// This is useful for short range of motion changes, for example picking up a controller shaped object + /// + /// The new range of motion you want to apply (temporarily) + /// How long you want the blend to the new range of motion to take (in seconds) + public void SetTemporaryRangeOfMotion(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds = 0.1f) + { + if (rangeOfMotion != newRangeOfMotion || temporaryRangeOfMotion != newRangeOfMotion) + { + TemporaryRangeOfMotionBlend(newRangeOfMotion, blendOverSeconds); + } + } + + /// + /// Resets the previously set temporary range of motion. + /// Will return to the range of motion defined by the rangeOfMotion field. + /// + /// How long you want the blend to the standard range of motion to take (in seconds) + public void ResetTemporaryRangeOfMotion(float blendOverSeconds = 0.1f) + { + ResetTemporaryRangeOfMotionBlend(blendOverSeconds); + } + + /// + /// Permanently sets the range of motion for this component. + /// + /// + /// The new range of motion to be set. + /// WithController being the best estimation of where fingers are wrapped around the controller (pressing buttons, etc). + /// WithoutController being a range between a flat hand and a fist. + /// How long you want the blend to the new range of motion to take (in seconds) + public void SetRangeOfMotion(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds = 0.1f) + { + if (rangeOfMotion != newRangeOfMotion) + { + RangeOfMotionBlend(newRangeOfMotion, blendOverSeconds); + } + } + + /// + /// Blend from the current skeletonBlend amount to full bone data. (skeletonBlend = 1) + /// + /// How long you want the blend to take (in seconds) + public void BlendToSkeleton(float overTime = 0.1f) + { + if (blendPoser != null) + blendSnapshot = blendPoser.GetBlendedPose(this); + blendPoser = null; + BlendTo(1, overTime); + } + + /// + /// Blend from the current skeletonBlend amount to pose animation. (skeletonBlend = 0) + /// Note: This will ignore the root position and rotation of the pose. + /// + /// How long you want the blend to take (in seconds) + public void BlendToPoser(SteamVR_Skeleton_Poser poser, float overTime = 0.1f) + { + if (poser == null) + return; + + blendPoser = poser; + BlendTo(0, overTime); + } + + /// + /// Blend from the current skeletonBlend amount to full animation data (no bone data. skeletonBlend = 0) + /// + /// How long you want the blend to take (in seconds) + public void BlendToAnimation(float overTime = 0.1f) + { + BlendTo(0, overTime); + } + + /// + /// Blend from the current skeletonBlend amount to a specified new amount. + /// + /// The amount of blend you want to apply. + /// 0 being fully set by animations, 1 being fully set by bone data from the action. + /// How long you want the blend to take (in seconds) + public void BlendTo(float blendToAmount, float overTime) + { + if (blendRoutine != null) + StopCoroutine(blendRoutine); + + if (this.gameObject.activeInHierarchy) + blendRoutine = StartCoroutine(DoBlendRoutine(blendToAmount, overTime)); + } + + + protected IEnumerator DoBlendRoutine(float blendToAmount, float overTime) + { + float startTime = Time.time; + float endTime = startTime + overTime; + + float startAmount = skeletonBlend; + + while (Time.time < endTime) + { + yield return null; + skeletonBlend = Mathf.Lerp(startAmount, blendToAmount, (Time.time - startTime) / overTime); + } + + skeletonBlend = blendToAmount; + blendRoutine = null; + } + + protected void RangeOfMotionBlend(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds) + { + if (rangeOfMotionBlendRoutine != null) + StopCoroutine(rangeOfMotionBlendRoutine); + + EVRSkeletalMotionRange oldRangeOfMotion = rangeOfMotion; + rangeOfMotion = newRangeOfMotion; + + if (this.gameObject.activeInHierarchy) + { + rangeOfMotionBlendRoutine = StartCoroutine(DoRangeOfMotionBlend(oldRangeOfMotion, newRangeOfMotion, blendOverSeconds)); + } + } + + protected void TemporaryRangeOfMotionBlend(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds) + { + if (rangeOfMotionBlendRoutine != null) + StopCoroutine(rangeOfMotionBlendRoutine); + + EVRSkeletalMotionRange oldRangeOfMotion = rangeOfMotion; + if (temporaryRangeOfMotion != null) + oldRangeOfMotion = temporaryRangeOfMotion.Value; + + temporaryRangeOfMotion = newRangeOfMotion; + + if (this.gameObject.activeInHierarchy) + { + rangeOfMotionBlendRoutine = StartCoroutine(DoRangeOfMotionBlend(oldRangeOfMotion, newRangeOfMotion, blendOverSeconds)); + } + } + + protected void ResetTemporaryRangeOfMotionBlend(float blendOverSeconds) + { + if (temporaryRangeOfMotion != null) + { + if (rangeOfMotionBlendRoutine != null) + StopCoroutine(rangeOfMotionBlendRoutine); + + EVRSkeletalMotionRange oldRangeOfMotion = temporaryRangeOfMotion.Value; + + EVRSkeletalMotionRange newRangeOfMotion = rangeOfMotion; + + temporaryRangeOfMotion = null; + + if (this.gameObject.activeInHierarchy) + { + rangeOfMotionBlendRoutine = StartCoroutine(DoRangeOfMotionBlend(oldRangeOfMotion, newRangeOfMotion, blendOverSeconds)); + } + } + } + + protected IEnumerator DoRangeOfMotionBlend(EVRSkeletalMotionRange oldRangeOfMotion, EVRSkeletalMotionRange newRangeOfMotion, float overTime) + { + float startTime = Time.time; + float endTime = startTime + overTime; + + Vector3[] oldBonePositions; + Quaternion[] oldBoneRotations; + + Vector3[] newBonePositions; + Quaternion[] newBoneRotations; + + while (Time.time < endTime) + { + yield return null; + float lerp = (Time.time - startTime) / overTime; + + if (skeletonBlend > 0) + { + skeletonAction.SetRangeOfMotion(oldRangeOfMotion); + skeletonAction.UpdateValueWithoutEvents(); + oldBonePositions = (Vector3[])GetBonePositions().Clone(); + oldBoneRotations = (Quaternion[])GetBoneRotations().Clone(); + + skeletonAction.SetRangeOfMotion(newRangeOfMotion); + skeletonAction.UpdateValueWithoutEvents(); + newBonePositions = GetBonePositions(); + newBoneRotations = GetBoneRotations(); + + for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++) + { + if (bones[boneIndex] == null) + continue; + + if (SteamVR_Utils.IsValid(newBoneRotations[boneIndex]) == false || SteamVR_Utils.IsValid(oldBoneRotations[boneIndex]) == false) + { + continue; + } + + Vector3 blendedRangeOfMotionPosition = Vector3.Lerp(oldBonePositions[boneIndex], newBonePositions[boneIndex], lerp); + Quaternion blendedRangeOfMotionRotation = Quaternion.Lerp(oldBoneRotations[boneIndex], newBoneRotations[boneIndex], lerp); + + if (skeletonBlend < 1) + { + if (blendPoser != null) + { + + SetBonePosition(boneIndex, Vector3.Lerp(blendSnapshot.bonePositions[boneIndex], blendedRangeOfMotionPosition, skeletonBlend)); + SetBoneRotation(boneIndex, Quaternion.Lerp(GetBlendPoseForBone(boneIndex, blendedRangeOfMotionRotation), blendedRangeOfMotionRotation, skeletonBlend)); + } + else + { + SetBonePosition(boneIndex, Vector3.Lerp(bones[boneIndex].localPosition, blendedRangeOfMotionPosition, skeletonBlend)); + SetBoneRotation(boneIndex, Quaternion.Lerp(bones[boneIndex].localRotation, blendedRangeOfMotionRotation, skeletonBlend)); + } + } + else + { + SetBonePosition(boneIndex, blendedRangeOfMotionPosition); + SetBoneRotation(boneIndex, blendedRangeOfMotionRotation); + } + } + } + + if (onBoneTransformsUpdated != null) + onBoneTransformsUpdated.Invoke(this, inputSource); + if (onBoneTransformsUpdatedEvent != null) + onBoneTransformsUpdatedEvent.Invoke(this, inputSource); + + } + + rangeOfMotionBlendRoutine = null; + } + + //why does this exist + protected virtual Quaternion GetBlendPoseForBone(int boneIndex, Quaternion skeletonRotation) + { + Quaternion poseRotation = blendSnapshot.boneRotations[boneIndex]; + return poseRotation; + } + + public virtual void UpdateSkeletonTransforms() + { + Vector3[] bonePositions = GetBonePositions(); + Quaternion[] boneRotations = GetBoneRotations(); + + if (skeletonBlend <= 0) + { + if (blendPoser != null) + { + SteamVR_Skeleton_Pose_Hand mainPose = blendPoser.skeletonMainPose.GetHand(inputSource); + for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++) + { + if (bones[boneIndex] == null) + continue; + + if ((boneIndex == SteamVR_Skeleton_JointIndexes.wrist && mainPose.ignoreWristPoseData) || + (boneIndex == SteamVR_Skeleton_JointIndexes.root && mainPose.ignoreRootPoseData)) + { + SetBonePosition(boneIndex, bonePositions[boneIndex]); + SetBoneRotation(boneIndex, boneRotations[boneIndex]); + } + else + { + Quaternion poseRotation = GetBlendPoseForBone(boneIndex, boneRotations[boneIndex]); + + SetBonePosition(boneIndex, blendSnapshot.bonePositions[boneIndex]); + SetBoneRotation(boneIndex, poseRotation); + } + } + } + else + { + for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++) + { + + Quaternion poseRotation = GetBlendPoseForBone(boneIndex, boneRotations[boneIndex]); + + SetBonePosition(boneIndex, blendSnapshot.bonePositions[boneIndex]); + SetBoneRotation(boneIndex, poseRotation); + + } + } + } + else if (skeletonBlend >= 1) + { + for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++) + { + if (bones[boneIndex] == null) + continue; + + SetBonePosition(boneIndex, bonePositions[boneIndex]); + SetBoneRotation(boneIndex, boneRotations[boneIndex]); + } + } + else + { + for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++) + { + if (bones[boneIndex] == null) + continue; + + if (blendPoser != null) + { + SteamVR_Skeleton_Pose_Hand mainPose = blendPoser.skeletonMainPose.GetHand(inputSource); + + if ((boneIndex == SteamVR_Skeleton_JointIndexes.wrist && mainPose.ignoreWristPoseData) || + (boneIndex == SteamVR_Skeleton_JointIndexes.root && mainPose.ignoreRootPoseData)) + { + SetBonePosition(boneIndex, bonePositions[boneIndex]); + SetBoneRotation(boneIndex, boneRotations[boneIndex]); + } + else + { + //Quaternion poseRotation = GetBlendPoseForBone(boneIndex, boneRotations[boneIndex]); + + SetBonePosition(boneIndex, Vector3.Lerp(blendSnapshot.bonePositions[boneIndex], bonePositions[boneIndex], skeletonBlend)); + SetBoneRotation(boneIndex, Quaternion.Lerp(blendSnapshot.boneRotations[boneIndex], boneRotations[boneIndex], skeletonBlend)); + //SetBoneRotation(boneIndex, GetBlendPoseForBone(boneIndex, boneRotations[boneIndex])); + } + } + else + { + if (blendSnapshot == null) + { + SetBonePosition(boneIndex, Vector3.Lerp(bones[boneIndex].localPosition, bonePositions[boneIndex], skeletonBlend)); + SetBoneRotation(boneIndex, Quaternion.Lerp(bones[boneIndex].localRotation, boneRotations[boneIndex], skeletonBlend)); + } + else + { + SetBonePosition(boneIndex, Vector3.Lerp(blendSnapshot.bonePositions[boneIndex], bonePositions[boneIndex], skeletonBlend)); + SetBoneRotation(boneIndex, Quaternion.Lerp(blendSnapshot.boneRotations[boneIndex], boneRotations[boneIndex], skeletonBlend)); + } + } + } + } + + + if (onBoneTransformsUpdated != null) + onBoneTransformsUpdated.Invoke(this, inputSource); + if (onBoneTransformsUpdatedEvent != null) + onBoneTransformsUpdatedEvent.Invoke(this, inputSource); + } + + public virtual void SetBonePosition(int boneIndex, Vector3 localPosition) + { + if (onlySetRotations == false) //ignore position sets if we're only setting rotations + bones[boneIndex].localPosition = localPosition; + } + + public virtual void SetBoneRotation(int boneIndex, Quaternion localRotation) + { + bones[boneIndex].localRotation = localRotation; + } + + /// + /// Gets the transform for a bone by the joint index. Joint indexes specified in: SteamVR_Skeleton_JointIndexes + /// + /// The joint index of the bone. Specified in SteamVR_Skeleton_JointIndexes + public virtual Transform GetBone(int joint) + { + if (bones == null || bones.Length == 0) + Awake(); + + return bones[joint]; + } + + + /// + /// Gets the position of the transform for a bone by the joint index. Joint indexes specified in: SteamVR_Skeleton_JointIndexes + /// + /// The joint index of the bone. Specified in SteamVR_Skeleton_JointIndexes + /// true to get the localspace position for the joint (position relative to this joint's parent) + public Vector3 GetBonePosition(int joint, bool local = false) + { + if (local) + return bones[joint].localPosition; + else + return bones[joint].position; + } + + /// + /// Gets the rotation of the transform for a bone by the joint index. Joint indexes specified in: SteamVR_Skeleton_JointIndexes + /// + /// The joint index of the bone. Specified in SteamVR_Skeleton_JointIndexes + /// true to get the localspace rotation for the joint (rotation relative to this joint's parent) + public Quaternion GetBoneRotation(int joint, bool local = false) + { + if (local) + return bones[joint].localRotation; + else + return bones[joint].rotation; + } + + protected Vector3[] GetBonePositions() + { + if (skeletonAvailable) + { + Vector3[] rawSkeleton = skeletonAction.GetBonePositions(); + if (mirroring == MirrorType.LeftToRight || mirroring == MirrorType.RightToLeft) + { + for (int boneIndex = 0; boneIndex < rawSkeleton.Length; boneIndex++) + { + rawSkeleton[boneIndex] = MirrorPosition(boneIndex, rawSkeleton[boneIndex]); + } + } + + return rawSkeleton; + } + else + { + //fallback to getting skeleton pose from skeletonPoser + if (fallbackPoser != null) + { + return fallbackPoser.GetBlendedPose(skeletonAction, inputSource).bonePositions; + } + else + { + Debug.LogError("Skeleton Action is not bound, and you have not provided a fallback SkeletonPoser. Please create one to drive hand animation when no skeleton data is available.", this); + return null; + } + } + } + + protected static readonly Quaternion rightFlipAngle = Quaternion.AngleAxis(180, Vector3.right); + protected Quaternion[] GetBoneRotations() + { + if (skeletonAvailable) + { + Quaternion[] rawSkeleton = skeletonAction.GetBoneRotations(); + if (mirroring == MirrorType.LeftToRight || mirroring == MirrorType.RightToLeft) + { + for (int boneIndex = 0; boneIndex < rawSkeleton.Length; boneIndex++) + { + rawSkeleton[boneIndex] = MirrorRotation(boneIndex, rawSkeleton[boneIndex]); + } + } + + return rawSkeleton; + + } + else + { + //fallback to getting skeleton pose from skeletonPoser + if (fallbackPoser != null) + { + return fallbackPoser.GetBlendedPose(skeletonAction, inputSource).boneRotations; + } + else + { + Debug.LogError("Skeleton Action is not bound, and you have not provided a fallback SkeletonPoser. Please create one to drive hand animation when no skeleton data is available.", this); + return null; + } + } + } + + public static Vector3 MirrorPosition(int boneIndex, Vector3 rawPosition) + { + if (boneIndex == SteamVR_Skeleton_JointIndexes.wrist || IsMetacarpal(boneIndex)) + { + rawPosition.Scale(new Vector3(-1, 1, 1)); + } + else if (boneIndex != SteamVR_Skeleton_JointIndexes.root) + { + rawPosition = rawPosition * -1; + } + + return rawPosition; + } + + public static Quaternion MirrorRotation(int boneIndex, Quaternion rawRotation) + { + if (boneIndex == SteamVR_Skeleton_JointIndexes.wrist) + { + rawRotation.y = rawRotation.y * -1; + rawRotation.z = rawRotation.z * -1; + } + + if (IsMetacarpal(boneIndex)) + { + rawRotation = rightFlipAngle * rawRotation; + } + + return rawRotation; + } + + protected virtual void UpdatePose() + { + if (skeletonAction == null) + return; + + Vector3 skeletonPosition = skeletonAction.GetLocalPosition(); + Quaternion skeletonRotation = skeletonAction.GetLocalRotation(); + if (origin == null) + { + if (this.transform.parent != null) + { + skeletonPosition = this.transform.parent.TransformPoint(skeletonPosition); + skeletonRotation = this.transform.parent.rotation * skeletonRotation; + } + } + else + { + skeletonPosition = origin.TransformPoint(skeletonPosition); + skeletonRotation = origin.rotation * skeletonRotation; + } + + if (skeletonAction.poseChanged) + { + if (onTransformChanged != null) + onTransformChanged.Invoke(this, inputSource); + if (onTransformChangedEvent != null) + onTransformChangedEvent.Invoke(this, inputSource); + } + + this.transform.position = skeletonPosition; + this.transform.rotation = skeletonRotation; + + if (onTransformUpdated != null) + onTransformUpdated.Invoke(this, inputSource); + } + + /// + /// Returns an array of positions/rotations that represent the state of each bone in a reference pose. + /// + /// Which reference pose to return + public void ForceToReferencePose(EVRSkeletalReferencePose referencePose) + { + bool temporarySession = false; + if (Application.isEditor && Application.isPlaying == false) + { + temporarySession = SteamVR.InitializeTemporarySession(true); + Awake(); + +#if UNITY_EDITOR + //gotta wait a bit for steamvr input to startup //todo: implement steamvr_input.isready + string title = "SteamVR"; + string text = "Getting reference pose..."; + float msToWait = 3000; + float increment = 100; + for (float timer = 0; timer < msToWait; timer += increment) + { + bool cancel = UnityEditor.EditorUtility.DisplayCancelableProgressBar(title, text, timer / msToWait); + if (cancel) + { + UnityEditor.EditorUtility.ClearProgressBar(); + + if (temporarySession) + SteamVR.ExitTemporarySession(); + return; + } + System.Threading.Thread.Sleep((int)increment); + } + UnityEditor.EditorUtility.ClearProgressBar(); +#endif + + skeletonAction.actionSet.Activate(); + + SteamVR_ActionSet_Manager.UpdateActionStates(true); + + skeletonAction.UpdateValueWithoutEvents(); + } + + if (skeletonAction.active == false) + { + Debug.LogError("[SteamVR Input] Please turn on your " + inputSource.ToString() + " controller and ensure SteamVR is open.", this); + return; + } + + SteamVR_Utils.RigidTransform[] transforms = skeletonAction.GetReferenceTransforms(EVRSkeletalTransformSpace.Parent, referencePose); + + if (transforms == null || transforms.Length == 0) + { + Debug.LogError("[SteamVR Input] Unable to get the reference transform for " + inputSource.ToString() + ". Please make sure SteamVR is open and both controllers are connected.", this); + } + + if (mirroring == MirrorType.LeftToRight || mirroring == MirrorType.RightToLeft) + { + for (int boneIndex = 0; boneIndex < transforms.Length; boneIndex++) + { + bones[boneIndex].localPosition = MirrorPosition(boneIndex, transforms[boneIndex].pos); + bones[boneIndex].localRotation = MirrorRotation(boneIndex, transforms[boneIndex].rot); + } + } + else + { + for (int boneIndex = 0; boneIndex < transforms.Length; boneIndex++) + { + bones[boneIndex].localPosition = transforms[boneIndex].pos; + bones[boneIndex].localRotation = transforms[boneIndex].rot; + } + } + + if (temporarySession) + SteamVR.ExitTemporarySession(); + } + + protected static bool IsMetacarpal(int boneIndex) + { + return (boneIndex == SteamVR_Skeleton_JointIndexes.indexMetacarpal || + boneIndex == SteamVR_Skeleton_JointIndexes.middleMetacarpal || + boneIndex == SteamVR_Skeleton_JointIndexes.ringMetacarpal || + boneIndex == SteamVR_Skeleton_JointIndexes.pinkyMetacarpal || + boneIndex == SteamVR_Skeleton_JointIndexes.thumbMetacarpal); + } + + public enum MirrorType + { + None, + LeftToRight, + RightToLeft + } + + public delegate void ActiveChangeHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource, bool active); + public delegate void ChangeHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource); + public delegate void UpdateHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource); + public delegate void TrackingChangeHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource, ETrackingResult trackingState); + public delegate void ValidPoseChangeHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource, bool validPose); + public delegate void DeviceConnectedChangeHandler(SteamVR_Behaviour_Skeleton fromAction, SteamVR_Input_Sources inputSource, bool deviceConnected); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs.meta new file mode 100644 index 00000000..6b49f22c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Skeleton.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00f6c0d7b5a00aa4a8d38a09a0480032 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31500 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs new file mode 100644 index 00000000..f2a1da84 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs @@ -0,0 +1,138 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using Valve.VR; + +namespace Valve.VR +{ + /// + /// The major difference between this component and the standard SteamVR_Behaviour_Skeleton is this one lets you + /// only use the joints you care about. You can set the transforms you're concerned with and ignore the ones you're not. + /// + public class SteamVR_Behaviour_SkeletonCustom : SteamVR_Behaviour_Skeleton + { + [SerializeField] + protected Transform _wrist; + + [SerializeField] + protected Transform _thumbMetacarpal; + + [SerializeField] + protected Transform _thumbProximal; + + [SerializeField] + protected Transform _thumbMiddle; + + [SerializeField] + protected Transform _thumbDistal; + + [SerializeField] + protected Transform _thumbTip; + + [SerializeField] + protected Transform _thumbAux; + + [SerializeField] + protected Transform _indexMetacarpal; + + [SerializeField] + protected Transform _indexProximal; + + [SerializeField] + protected Transform _indexMiddle; + + [SerializeField] + protected Transform _indexDistal; + + [SerializeField] + protected Transform _indexTip; + + [SerializeField] + protected Transform _indexAux; + + [SerializeField] + protected Transform _middleMetacarpal; + + [SerializeField] + protected Transform _middleProximal; + + [SerializeField] + protected Transform _middleMiddle; + + [SerializeField] + protected Transform _middleDistal; + + [SerializeField] + protected Transform _middleTip; + + [SerializeField] + protected Transform _middleAux; + + [SerializeField] + protected Transform _ringMetacarpal; + + [SerializeField] + protected Transform _ringProximal; + + [SerializeField] + protected Transform _ringMiddle; + + [SerializeField] + protected Transform _ringDistal; + + [SerializeField] + protected Transform _ringTip; + + [SerializeField] + protected Transform _ringAux; + + [SerializeField] + protected Transform _pinkyMetacarpal; + + [SerializeField] + protected Transform _pinkyProximal; + + [SerializeField] + protected Transform _pinkyMiddle; + + [SerializeField] + protected Transform _pinkyDistal; + + [SerializeField] + protected Transform _pinkyTip; + + [SerializeField] + protected Transform _pinkyAux; + + + protected override void AssignBonesArray() + { + bones[SteamVR_Skeleton_JointIndexes.wrist] = _wrist; + bones[SteamVR_Skeleton_JointIndexes.thumbProximal] = _thumbProximal; + bones[SteamVR_Skeleton_JointIndexes.thumbMiddle] = _thumbMiddle; + bones[SteamVR_Skeleton_JointIndexes.thumbDistal] = _thumbDistal; + bones[SteamVR_Skeleton_JointIndexes.thumbTip] = _thumbTip; + bones[SteamVR_Skeleton_JointIndexes.thumbAux] = _thumbAux; + bones[SteamVR_Skeleton_JointIndexes.indexProximal] = _indexProximal; + bones[SteamVR_Skeleton_JointIndexes.indexMiddle] = _indexMiddle; + bones[SteamVR_Skeleton_JointIndexes.indexDistal] = _indexDistal; + bones[SteamVR_Skeleton_JointIndexes.indexTip] = _indexTip; + bones[SteamVR_Skeleton_JointIndexes.indexAux] = _indexAux; + bones[SteamVR_Skeleton_JointIndexes.middleProximal] = _middleProximal; + bones[SteamVR_Skeleton_JointIndexes.middleMiddle] = _middleMiddle; + bones[SteamVR_Skeleton_JointIndexes.middleDistal] = _middleDistal; + bones[SteamVR_Skeleton_JointIndexes.middleTip] = _middleTip; + bones[SteamVR_Skeleton_JointIndexes.middleAux] = _middleAux; + bones[SteamVR_Skeleton_JointIndexes.ringProximal] = _ringProximal; + bones[SteamVR_Skeleton_JointIndexes.ringMiddle] = _ringMiddle; + bones[SteamVR_Skeleton_JointIndexes.ringDistal] = _ringDistal; + bones[SteamVR_Skeleton_JointIndexes.ringTip] = _ringTip; + bones[SteamVR_Skeleton_JointIndexes.ringAux] = _ringAux; + bones[SteamVR_Skeleton_JointIndexes.pinkyProximal] = _pinkyProximal; + bones[SteamVR_Skeleton_JointIndexes.pinkyMiddle] = _pinkyMiddle; + bones[SteamVR_Skeleton_JointIndexes.pinkyDistal] = _pinkyDistal; + bones[SteamVR_Skeleton_JointIndexes.pinkyTip] = _pinkyTip; + bones[SteamVR_Skeleton_JointIndexes.pinkyAux] = _pinkyAux; + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs.meta new file mode 100644 index 00000000..3614f8a2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_SkeletonCustom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9e4c0a04a2f4ee942ba9bd5d7ceb7266 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs new file mode 100644 index 00000000..ebf3d59d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs @@ -0,0 +1,140 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR +{ + /// + /// Simplifies the use of the Vector2 action. Provides an onChange event that fires whenever the vector2 changes. + /// + public class SteamVR_Behaviour_Vector2 : MonoBehaviour + { + /// The vector2 action to get data from + public SteamVR_Action_Vector2 vector2Action; + + /// The device this action applies to. Any if the action is not device specific. + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + /// Unity event that fires whenever the action's value has changed since the last update. + [Tooltip("Fires whenever the action's value has changed since the last update.")] + public SteamVR_Behaviour_Vector2Event onChange; + + /// Unity event that fires whenever the action's value has been updated + [Tooltip("Fires whenever the action's value has been updated.")] + public SteamVR_Behaviour_Vector2Event onUpdate; + + /// Unity event that fires whenever the action's value has been updated and is non-zero + [Tooltip("Fires whenever the action's value has been updated and is non-zero.")] + public SteamVR_Behaviour_Vector2Event onAxis; + + /// C# event that fires whenever the action's value has changed since the last update. + public ChangeHandler onChangeEvent; + + /// C# event that fires whenever the action's value has been updated + public UpdateHandler onUpdateEvent; + + /// C# event that fires whenever the action's value has been updated and is non-zero + public AxisHandler onAxisEvent; + + /// Returns whether this action is bound and the action set is active + public bool isActive { get { return vector2Action.GetActive(inputSource); } } + + protected virtual void OnEnable() + { + if (vector2Action == null) + { + Debug.LogError("[SteamVR] Vector2 action not set.", this); + return; + } + + AddHandlers(); + } + + protected virtual void OnDisable() + { + RemoveHandlers(); + } + + protected void AddHandlers() + { + vector2Action[inputSource].onUpdate += SteamVR_Behaviour_Vector2_OnUpdate; + vector2Action[inputSource].onChange += SteamVR_Behaviour_Vector2_OnChange; + vector2Action[inputSource].onAxis += SteamVR_Behaviour_Vector2_OnAxis; + } + + protected void RemoveHandlers() + { + if (vector2Action != null) + { + vector2Action[inputSource].onUpdate -= SteamVR_Behaviour_Vector2_OnUpdate; + vector2Action[inputSource].onChange -= SteamVR_Behaviour_Vector2_OnChange; + vector2Action[inputSource].onAxis -= SteamVR_Behaviour_Vector2_OnAxis; + } + } + + private void SteamVR_Behaviour_Vector2_OnUpdate(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta) + { + if (onUpdate != null) + { + onUpdate.Invoke(this, fromSource, newAxis, newDelta); + } + if (onUpdateEvent != null) + { + onUpdateEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Vector2_OnChange(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta) + { + if (onChange != null) + { + onChange.Invoke(this, fromSource, newAxis, newDelta); + } + if (onChangeEvent != null) + { + onChangeEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Vector2_OnAxis(SteamVR_Action_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta) + { + if (onAxis != null) + { + onAxis.Invoke(this, fromSource, newAxis, newDelta); + } + if (onAxisEvent != null) + { + onAxisEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + if (vector2Action != null) + return vector2Action.GetLocalizedOriginPart(inputSource, localizedParts); + return null; + } + + public delegate void AxisHandler(SteamVR_Behaviour_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta); + public delegate void ChangeHandler(SteamVR_Behaviour_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta); + public delegate void UpdateHandler(SteamVR_Behaviour_Vector2 fromAction, SteamVR_Input_Sources fromSource, Vector2 newAxis, Vector2 newDelta); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs.meta new file mode 100644 index 00000000..fdcced30 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector2.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 882e9db3ae3cfdf4793461eada0f54b6 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs new file mode 100644 index 00000000..915b5f22 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs @@ -0,0 +1,138 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR +{ + public class SteamVR_Behaviour_Vector3 : MonoBehaviour + { + /// The vector3 action to get data from + public SteamVR_Action_Vector3 vector3Action; + + /// The device this action applies to. Any if the action is not device specific. + [Tooltip("The device this action should apply to. Any if the action is not device specific.")] + public SteamVR_Input_Sources inputSource; + + /// Unity event that fires whenever the action's value has changed since the last update. + [Tooltip("Fires whenever the action's value has changed since the last update.")] + public SteamVR_Behaviour_Vector3Event onChange; + + /// Unity event that fires whenever the action's value has been updated + [Tooltip("Fires whenever the action's value has been updated.")] + public SteamVR_Behaviour_Vector3Event onUpdate; + + /// Unity event that fires whenever the action's value has been updated and is non-zero + [Tooltip("Fires whenever the action's value has been updated and is non-zero.")] + public SteamVR_Behaviour_Vector3Event onAxis; + + /// C# event that fires whenever the action's value has changed since the last update. + public ChangeHandler onChangeEvent; + + /// C# event that fires whenever the action's value has been updated + public UpdateHandler onUpdateEvent; + + /// C# event that fires whenever the action's value has been updated and is non-zero + public AxisHandler onAxisEvent; + + + /// Returns whether this action is bound and the action set is active + public bool isActive { get { return vector3Action.GetActive(inputSource); } } + + protected virtual void OnEnable() + { + if (vector3Action == null) + { + Debug.LogError("[SteamVR] Vector3 action not set.", this); + return; + } + + AddHandlers(); + } + + protected virtual void OnDisable() + { + RemoveHandlers(); + } + + protected void AddHandlers() + { + vector3Action[inputSource].onUpdate += SteamVR_Behaviour_Vector3_OnUpdate; + vector3Action[inputSource].onChange += SteamVR_Behaviour_Vector3_OnChange; + vector3Action[inputSource].onAxis += SteamVR_Behaviour_Vector3_OnAxis; + } + + protected void RemoveHandlers() + { + if (vector3Action != null) + { + vector3Action[inputSource].onUpdate -= SteamVR_Behaviour_Vector3_OnUpdate; + vector3Action[inputSource].onChange -= SteamVR_Behaviour_Vector3_OnChange; + vector3Action[inputSource].onAxis -= SteamVR_Behaviour_Vector3_OnAxis; + } + } + + private void SteamVR_Behaviour_Vector3_OnUpdate(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta) + { + if (onUpdate != null) + { + onUpdate.Invoke(this, fromSource, newAxis, newDelta); + } + if (onUpdateEvent != null) + { + onUpdateEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Vector3_OnChange(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta) + { + if (onChange != null) + { + onChange.Invoke(this, fromSource, newAxis, newDelta); + } + if (onChangeEvent != null) + { + onChangeEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + private void SteamVR_Behaviour_Vector3_OnAxis(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta) + { + if (onAxis != null) + { + onAxis.Invoke(this, fromSource, newAxis, newDelta); + } + if (onAxisEvent != null) + { + onAxisEvent.Invoke(this, fromSource, newAxis, newDelta); + } + } + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public string GetLocalizedName(params EVRInputStringBits[] localizedParts) + { + if (vector3Action != null) + return vector3Action.GetLocalizedOriginPart(inputSource, localizedParts); + return null; + } + + public delegate void AxisHandler(SteamVR_Behaviour_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta); + public delegate void ChangeHandler(SteamVR_Behaviour_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta); + public delegate void UpdateHandler(SteamVR_Behaviour_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 newAxis, Vector3 newDelta); + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs.meta new file mode 100644 index 00000000..30ac562f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Behaviour_Vector3.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a749ce0534daa1a4c9455e56191c9e93 +timeCreated: 1544852185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs.meta new file mode 100644 index 00000000..386001d8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2fd04576439b81a438e44cc006d35ebb +timeCreated: 1544852186 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs.meta new file mode 100644 index 00000000..2a47f56b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_DefaultActionSet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52de2eb8a319fcb4aa7dd51c4127f124 +timeCreated: 1544852186 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs new file mode 100644 index 00000000..c4962840 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs @@ -0,0 +1,1655 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using Valve.VR; +using System.IO; +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Linq; +using Valve.Newtonsoft.Json; +using System.Text; + +namespace Valve.VR +{ + public partial class SteamVR_Input + { + public const string defaultInputGameObjectName = "[SteamVR Input]"; + private const string localizationKeyName = "localization"; + + /// True if the actions file has been initialized + public static bool fileInitialized = false; + + /// True if the steamvr input system initialization process has completed successfully + public static bool initialized = false; + + /// True if the preinitialization process (setting up dictionaries, etc) has completed successfully + public static bool preInitialized = false; + + /// The serialized version of the actions file we're currently using (only used in editor) + public static SteamVR_Input_ActionFile actionFile; + + /// The hash of the current action file on disk + public static string actionFileHash; + + /// An event that fires when the non visual actions (everything except poses / skeletons) have been updated + public static event Action onNonVisualActionsUpdated; + + /// An event that fires when the pose actions have been updated + public static event PosesUpdatedHandler onPosesUpdated; + public delegate void PosesUpdatedHandler(bool skipSendingEvents); + + /// An event that fires when the skeleton actions have been updated + public static event SkeletonsUpdatedHandler onSkeletonsUpdated; + public delegate void SkeletonsUpdatedHandler(bool skipSendingEvents); + + protected static bool initializing = false; + + protected static int startupFrame = 0; + public static bool isStartupFrame + { + get + { + return Time.frameCount >= (startupFrame-1) && Time.frameCount <= (startupFrame+1); + } + } + + + #region array accessors + /// An array of all action sets + public static SteamVR_ActionSet[] actionSets; + + /// An array of all actions (in all action sets) + public static SteamVR_Action[] actions; + + /// An array of all input actions + public static ISteamVR_Action_In[] actionsIn; + + /// An array of all output actions (haptic) + public static ISteamVR_Action_Out[] actionsOut; + + /// An array of all the boolean actions + public static SteamVR_Action_Boolean[] actionsBoolean; + + /// An array of all the single actions + public static SteamVR_Action_Single[] actionsSingle; + + /// An array of all the vector2 actions + public static SteamVR_Action_Vector2[] actionsVector2; + + /// An array of all the vector3 actions + public static SteamVR_Action_Vector3[] actionsVector3; + + /// An array of all the pose actions + public static SteamVR_Action_Pose[] actionsPose; + + /// An array of all the skeleton actions + public static SteamVR_Action_Skeleton[] actionsSkeleton; + + /// An array of all the vibration (haptic) actions + public static SteamVR_Action_Vibration[] actionsVibration; + + /// An array of all the input actions that are not pose or skeleton actions (boolean, single, vector2, vector3) + public static ISteamVR_Action_In[] actionsNonPoseNonSkeletonIn; + + protected static Dictionary actionSetsByPath = new Dictionary(); + protected static Dictionary actionSetsByPathLowered = new Dictionary(); + protected static Dictionary actionsByPath = new Dictionary(); + protected static Dictionary actionsByPathLowered = new Dictionary(); + + protected static Dictionary actionSetsByPathCache = new Dictionary(); + protected static Dictionary actionsByPathCache = new Dictionary(); + + protected static Dictionary actionsByNameCache = new Dictionary(); + protected static Dictionary actionSetsByNameCache = new Dictionary(); + #endregion + + static SteamVR_Input() + { +#if !UNITY_EDITOR + //If you want a single frame of performance increase on application start and have already generated your actions uncomment the following two lines + //SteamVR_Actions.Preinitialize(); + //return; +#endif + FindPreinitializeMethod(); + } + + public static void ForcePreinitialize() + { + FindPreinitializeMethod(); + } + + private static void FindPreinitializeMethod() + { + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + for (int assemblyIndex = 0; assemblyIndex < assemblies.Length; assemblyIndex++) + { + Assembly assembly = assemblies[assemblyIndex]; + Type type = assembly.GetType(SteamVR_Input_Generator_Names.fullActionsClassName); + if (type != null) + { + MethodInfo preinitMethodInfo = type.GetMethod(SteamVR_Input_Generator_Names.preinitializeMethodName); + if (preinitMethodInfo != null) + { + preinitMethodInfo.Invoke(null, null); + return; + } + } + } + } + + /// + /// Get all the handles for actions and action sets. + /// Initialize our dictionaries of action / action set names. + /// Setup the tracking space universe origin + /// + public static void Initialize(bool force = false) + { + if (initialized == true && force == false) + return; + +#if UNITY_EDITOR + CheckSetup(); + if (IsOpeningSetup()) + return; +#endif + + //Debug.Log("[SteamVR] Initializing SteamVR input..."); + initializing = true; + + startupFrame = Time.frameCount; + + SteamVR_ActionSet_Manager.Initialize(); + SteamVR_Input_Source.Initialize(); + + for (int actionIndex = 0; actionIndex < actions.Length; actionIndex++) + { + SteamVR_Action action = actions[actionIndex]; + action.Initialize(true); + } + + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet set = actionSets[actionSetIndex]; + set.Initialize(true); + } + + if (SteamVR_Settings.instance.activateFirstActionSetOnStart) + { + if (actionSets.Length > 0) + actionSets[0].Activate(); + else + { + Debug.LogError("[SteamVR] No action sets to activate."); + } + } + + SteamVR_Action_Pose.SetTrackingUniverseOrigin(SteamVR_Settings.instance.trackingSpace); + + initialized = true; + initializing = false; + //Debug.Log("[SteamVR] Input initialization complete."); + } + + public static void PreinitializeFinishActionSets() + { + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet actionSet = actionSets[actionSetIndex]; + actionSet.FinishPreInitialize(); + } + } + + public static void PreinitializeActionSetDictionaries() + { + actionSetsByPath.Clear(); + actionSetsByPathLowered.Clear(); + actionSetsByPathCache.Clear(); + + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + SteamVR_ActionSet actionSet = actionSets[actionSetIndex]; + actionSetsByPath.Add(actionSet.fullPath, actionSet); + actionSetsByPathLowered.Add(actionSet.fullPath.ToLower(), actionSet); + } + } + + public static void PreinitializeActionDictionaries() + { + actionsByPath.Clear(); + actionsByPathLowered.Clear(); + actionsByPathCache.Clear(); + + for (int actionIndex = 0; actionIndex < actions.Length; actionIndex++) + { + SteamVR_Action action = actions[actionIndex]; + actionsByPath.Add(action.fullPath, action); + actionsByPathLowered.Add(action.fullPath.ToLower(), action); + } + } + + /// Gets called by SteamVR_Behaviour every Update and updates actions if the steamvr settings are configured to update then. + public static void Update() + { + if (initialized == false || isStartupFrame) + return; + + if (SteamVR.settings.IsInputUpdateMode(SteamVR_UpdateModes.OnUpdate)) + { + UpdateNonVisualActions(); + } + if (SteamVR.settings.IsPoseUpdateMode(SteamVR_UpdateModes.OnUpdate)) + { + UpdateVisualActions(); + } + } + + /// + /// Gets called by SteamVR_Behaviour every LateUpdate and updates actions if the steamvr settings are configured to update then. + /// Also updates skeletons regardless of settings are configured to so we can account for animations on the skeletons. + /// + public static void LateUpdate() + { + if (initialized == false || isStartupFrame) + return; + + if (SteamVR.settings.IsInputUpdateMode(SteamVR_UpdateModes.OnLateUpdate)) + { + UpdateNonVisualActions(); + } + + if (SteamVR.settings.IsPoseUpdateMode(SteamVR_UpdateModes.OnLateUpdate)) + { + //update poses and skeleton + UpdateVisualActions(); + } + else + { + //force skeleton update so animation blending sticks + UpdateSkeletonActions(true); + } + } + + /// Gets called by SteamVR_Behaviour every FixedUpdate and updates actions if the steamvr settings are configured to update then. + public static void FixedUpdate() + { + if (initialized == false || isStartupFrame) + return; + + if (SteamVR.settings.IsInputUpdateMode(SteamVR_UpdateModes.OnFixedUpdate)) + { + UpdateNonVisualActions(); + } + + if (SteamVR.settings.IsPoseUpdateMode(SteamVR_UpdateModes.OnFixedUpdate)) + { + UpdateVisualActions(); + } + } + + /// Gets called by SteamVR_Behaviour every OnPreCull and updates actions if the steamvr settings are configured to update then. + public static void OnPreCull() + { + if (initialized == false || isStartupFrame) + return; + + if (SteamVR.settings.IsInputUpdateMode(SteamVR_UpdateModes.OnPreCull)) + { + UpdateNonVisualActions(); + } + if (SteamVR.settings.IsPoseUpdateMode(SteamVR_UpdateModes.OnPreCull)) + { + UpdateVisualActions(); + } + } + + /// + /// Updates the states of all the visual actions (pose / skeleton) + /// + /// Controls whether or not events are fired from this update call + public static void UpdateVisualActions(bool skipStateAndEventUpdates = false) + { + if (initialized == false) + return; + + SteamVR_ActionSet_Manager.UpdateActionStates(); + + UpdatePoseActions(skipStateAndEventUpdates); + + UpdateSkeletonActions(skipStateAndEventUpdates); + } + + /// + /// Updates the states of all the pose actions + /// + /// Controls whether or not events are fired from this update call + public static void UpdatePoseActions(bool skipSendingEvents = false) + { + if (initialized == false) + return; + + for (int actionIndex = 0; actionIndex < actionsPose.Length; actionIndex++) + { + SteamVR_Action_Pose action = actionsPose[actionIndex]; + action.UpdateValues(skipSendingEvents); + } + + if (onPosesUpdated != null) + onPosesUpdated(false); + } + + + /// + /// Updates the states of all the skeleton actions + /// + /// Controls whether or not events are fired from this update call + public static void UpdateSkeletonActions(bool skipSendingEvents = false) + { + if (initialized == false) + return; + + for (int actionIndex = 0; actionIndex < actionsSkeleton.Length; actionIndex++) + { + SteamVR_Action_Skeleton action = actionsSkeleton[actionIndex]; + + action.UpdateValue(skipSendingEvents); + } + + if (onSkeletonsUpdated != null) + onSkeletonsUpdated(skipSendingEvents); + } + + + /// + /// Updates the states of all the non visual actions (boolean, single, vector2, vector3) + /// + public static void UpdateNonVisualActions() + { + if (initialized == false) + return; + + SteamVR_ActionSet_Manager.UpdateActionStates(); + + for (int actionIndex = 0; actionIndex < actionsNonPoseNonSkeletonIn.Length; actionIndex++) + { + ISteamVR_Action_In action = actionsNonPoseNonSkeletonIn[actionIndex]; + + action.UpdateValues(); + } + + if (onNonVisualActionsUpdated != null) + onNonVisualActionsUpdated(); + } + + private static uint sizeVRActiveActionSet_t = 0; + protected static void ShowBindingHintsForSets(VRActiveActionSet_t[] sets, ulong highlightAction = 0) + { + if (sizeVRActiveActionSet_t == 0) + sizeVRActiveActionSet_t = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRActiveActionSet_t)); + + OpenVR.Input.ShowBindingsForActionSet(sets, sizeVRActiveActionSet_t, highlightAction); + } + + private static VRActiveActionSet_t[] setCache = new VRActiveActionSet_t[1]; + + /// + /// Shows all the bindings for the actions in the action's set. + /// + /// Highlights the binding of the passed in action (must be in an active set) + public static bool ShowBindingHints(ISteamVR_Action_In originToHighlight) + { + if (originToHighlight != null) + { + setCache[0].ulActionSet = originToHighlight.actionSet.handle; + ShowBindingHintsForSets(setCache, originToHighlight.activeOrigin); + return true; + } + + return false; + } + + /// + /// Shows all the bindings for the actions in the action set. + /// + public static bool ShowBindingHints(ISteamVR_ActionSet setToShow) + { + if (setToShow != null) + { + setCache[0].ulActionSet = setToShow.handle; + ShowBindingHintsForSets(setCache, 0); + return true; + } + + return false; + } + + /// + /// Shows all the bindings for the actions in the active sets. + /// + /// Highlights the binding of the passed in action (must be in an active set) + public static void ShowBindingHintsForActiveActionSets(ulong highlightAction = 0) + { + if (sizeVRActiveActionSet_t == 0) + sizeVRActiveActionSet_t = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRActiveActionSet_t)); + + OpenVR.Input.ShowBindingsForActionSet(SteamVR_ActionSet_Manager.rawActiveActionSetArray, sizeVRActiveActionSet_t, highlightAction); + } + + #region String accessor helpers + + #region action accessors + /// + /// Get an action's action data by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static T GetActionDataFromPath(string path, bool caseSensitive = false) where T : SteamVR_Action_Source_Map + { + SteamVR_Action action = GetBaseActionFromPath(path, caseSensitive); + if (action != null) + { + T actionData = (T)action.GetSourceMap(); + return actionData; + } + + return null; + } + + /// + /// Get an action set's data by the full path to that action. Action set paths are in the format /actions/[actionSet] + /// + /// The full path to the action you want (Action set paths are in the format /actions/[actionSet]) + /// case sensitive searches are faster + public static SteamVR_ActionSet_Data GetActionSetDataFromPath(string path, bool caseSensitive = false) + { + SteamVR_ActionSet actionSet = GetActionSetFromPath(path, caseSensitive); + if (actionSet != null) + { + return actionSet.GetActionSetData(); + } + + return null; + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static T GetActionFromPath(string path, bool caseSensitive = false, bool returnNulls = false) where T : SteamVR_Action, new() + { + SteamVR_Action foundAction = GetBaseActionFromPath(path, caseSensitive); + if (foundAction != null) + return foundAction.GetCopy(); + + if (returnNulls) + return null; + + return CreateFakeAction(path, caseSensitive); + } + + // non-copy version + public static SteamVR_Action GetBaseActionFromPath(string path, bool caseSensitive = false) + { + if (string.IsNullOrEmpty(path)) + return null; + + if (caseSensitive) + { + if (actionsByPath.ContainsKey(path)) + { + return actionsByPath[path]; + } + } + else + { + if (actionsByPathCache.ContainsKey(path)) + { + return actionsByPathCache[path]; + } + else if (actionsByPath.ContainsKey(path)) + { + actionsByPathCache.Add(path, actionsByPath[path]); + return actionsByPath[path]; + } + else + { + string loweredPath = path.ToLower(); + if (actionsByPathLowered.ContainsKey(loweredPath)) + { + actionsByPathCache.Add(path, actionsByPathLowered[loweredPath]); + return actionsByPathLowered[loweredPath]; + } + else + { + actionsByPathCache.Add(path, null); + } + } + } + + return null; + } + + public static bool HasActionPath(string path, bool caseSensitive = false) + { + SteamVR_Action action = GetBaseActionFromPath(path, caseSensitive); + return action != null; + } + + public static bool HasAction(string actionName, bool caseSensitive = false) + { + SteamVR_Action action = GetBaseAction(null, actionName, caseSensitive); + return action != null; + } + + public static bool HasAction(string actionSetName, string actionName, bool caseSensitive = false) + { + SteamVR_Action action = GetBaseAction(actionSetName, actionName, caseSensitive); + return action != null; + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Boolean GetBooleanActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Single GetSingleActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector2 GetVector2ActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector3 GetVector3ActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vibration GetVibrationActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Pose GetPoseActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Skeleton GetSkeletonActionFromPath(string path, bool caseSensitive = false) + { + return GetActionFromPath(path, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + /// returns null if the action does not exist + public static T GetAction(string actionSetName, string actionName, bool caseSensitive = false, bool returnNulls = false) where T : SteamVR_Action, new() + { + SteamVR_Action action = GetBaseAction(actionSetName, actionName, caseSensitive); + if (action != null) + return (T)action.GetCopy(); + + if (returnNulls) + return null; + + return CreateFakeAction(actionSetName, actionName, caseSensitive); + } + + public static SteamVR_Action GetBaseAction(string actionSetName, string actionName, bool caseSensitive = false) + { + if (actions == null) + { + return null; + } + + if (string.IsNullOrEmpty(actionSetName)) + { + for (int actionIndex = 0; actionIndex < actions.Length; actionIndex++) + { + if (caseSensitive) + { + if (actions[actionIndex].GetShortName() == actionName) + return actions[actionIndex]; + } + else + { + if (string.Equals(actions[actionIndex].GetShortName(), actionName, StringComparison.CurrentCultureIgnoreCase)) + return actions[actionIndex]; + } + } + } + else + { + SteamVR_ActionSet actionSet = GetActionSet(actionSetName, caseSensitive, true); + + if (actionSet != null) + { + for (int actionIndex = 0; actionIndex < actionSet.allActions.Length; actionIndex++) + { + if (caseSensitive) + { + if (actionSet.allActions[actionIndex].GetShortName() == actionName) + return actionSet.allActions[actionIndex]; + } + else + { + if (string.Equals(actionSet.allActions[actionIndex].GetShortName(), actionName, StringComparison.CurrentCultureIgnoreCase)) + return actionSet.allActions[actionIndex]; + } + } + } + } + + return null; + } + + private static T CreateFakeAction(string actionSetName, string actionName, bool caseSensitive) where T : SteamVR_Action, new() + { + if (typeof(T) == typeof(SteamVR_Action_Vibration)) + { + return SteamVR_Action.CreateUninitialized(actionSetName, SteamVR_ActionDirections.Out, actionName, caseSensitive); + } + else + { + return SteamVR_Action.CreateUninitialized(actionSetName, SteamVR_ActionDirections.In, actionName, caseSensitive); + } + } + + private static T CreateFakeAction(string actionPath, bool caseSensitive) where T : SteamVR_Action, new() + { + return SteamVR_Action.CreateUninitialized(actionPath, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static T GetAction(string actionName, bool caseSensitive = false) where T : SteamVR_Action, new() + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Boolean GetBooleanAction(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Boolean GetBooleanAction(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Single GetSingleAction(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Single GetSingleAction(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector2 GetVector2Action(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector2 GetVector2Action(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector3 GetVector3Action(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vector3 GetVector3Action(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Pose GetPoseAction(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Pose GetPoseAction(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Skeleton GetSkeletonAction(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Skeleton GetSkeletonAction(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vibration GetVibrationAction(string actionSetName, string actionName, bool caseSensitive = false) + { + return GetAction(actionSetName, actionName, caseSensitive); + } + + /// + /// Get an action by the full path to that action. Action paths are in the format /actions/[actionSet]/[direction]/[actionName] + /// + /// The type of action you're expecting to get back + /// The full path to the action you want (Action paths are in the format /actions/[actionSet]/[direction]/[actionName]) + /// case sensitive searches are faster + public static SteamVR_Action_Vibration GetVibrationAction(string actionName, bool caseSensitive = false) + { + return GetAction(null, actionName, caseSensitive); + } + + /// + /// Get an action set by the full path to that action set. Action set paths are in the format /actions/[actionSet] + /// + /// The type of action set you're expecting to get back + /// The name to the action set you want + /// case sensitive searches are faster + /// returns a null if the set does not exist + public static T GetActionSet(string actionSetName, bool caseSensitive = false, bool returnNulls = false) where T : SteamVR_ActionSet, new() + { + if (actionSets == null) + { + if (returnNulls) + return null; + + return SteamVR_ActionSet.CreateFromName(actionSetName); + } + + for (int actionSetIndex = 0; actionSetIndex < actionSets.Length; actionSetIndex++) + { + if (caseSensitive) + { + if (actionSets[actionSetIndex].GetShortName() == actionSetName) + return actionSets[actionSetIndex].GetCopy(); + } + else + { + if (string.Equals(actionSets[actionSetIndex].GetShortName(), actionSetName, StringComparison.CurrentCultureIgnoreCase)) + return actionSets[actionSetIndex].GetCopy(); + } + } + + if (returnNulls) + return null; + + return SteamVR_ActionSet.CreateFromName(actionSetName); + } + + /// + /// Get an action set by the full path to that action set. Action set paths are in the format /actions/[actionSet] + /// + /// The type of action set you're expecting to get back + /// The name to the action set you want + /// case sensitive searches are faster + public static SteamVR_ActionSet GetActionSet(string actionSetName, bool caseSensitive = false, bool returnsNulls = false) + { + return GetActionSet(actionSetName, caseSensitive, returnsNulls); + } + + protected static bool HasActionSet(string name, bool caseSensitive = false) + { + SteamVR_ActionSet actionSet = GetActionSet(name, caseSensitive, true); + return actionSet != null; + } + + /// + /// Get an action set by the full path to that action set. Action set paths are in the format /actions/[actionSet] + /// + /// The type of action set you're expecting to get back + /// The full path to the action set you want (Action paths are in the format /actions/[actionSet]) + /// case sensitive searches are faster + public static T GetActionSetFromPath(string path, bool caseSensitive = false, bool returnsNulls = false) where T : SteamVR_ActionSet, new() + { + if (actionSets == null || actionSets[0] == null || string.IsNullOrEmpty(path)) + { + if (returnsNulls) + return null; + + return SteamVR_ActionSet.Create(path); + } + + if (caseSensitive) + { + if (actionSetsByPath.ContainsKey(path)) + { + return actionSetsByPath[path].GetCopy(); + } + } + else + { + if (actionSetsByPathCache.ContainsKey(path)) + { + SteamVR_ActionSet set = actionSetsByPathCache[path]; + if (set == null) + return null; + else + return set.GetCopy(); + } + else if (actionSetsByPath.ContainsKey(path)) + { + actionSetsByPathCache.Add(path, actionSetsByPath[path]); + return actionSetsByPath[path].GetCopy(); + } + else + { + string loweredPath = path.ToLower(); + if (actionSetsByPathLowered.ContainsKey(loweredPath)) + { + actionSetsByPathCache.Add(path, actionSetsByPathLowered[loweredPath]); + return actionSetsByPath[loweredPath].GetCopy(); + } + else + { + actionSetsByPathCache.Add(path, null); + } + } + } + + if (returnsNulls) + return null; + + return SteamVR_ActionSet.Create(path); + } + + /// + /// Get an action set by the full path to that action set. Action set paths are in the format /actions/[actionSet] + /// + /// The full path to the action set you want (Action paths are in the format /actions/[actionSet]) + /// case sensitive searches are faster + public static SteamVR_ActionSet GetActionSetFromPath(string path, bool caseSensitive = false) + { + return GetActionSetFromPath(path, caseSensitive); + } + #endregion + + #region digital string accessors + /// + /// Get the state of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static bool GetState(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Boolean booleanAction = GetAction(actionSet, action, caseSensitive); + if (booleanAction != null) + { + return booleanAction.GetState(inputSource); + } + + return false; + } + + /// + /// Get the state of an action by the action name and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static bool GetState(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetState(null, action, inputSource, caseSensitive); + } + + /// + /// Get the state down of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + /// True when the action was false last update and is now true. Returns false again afterwards. + public static bool GetStateDown(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Boolean booleanAction = GetAction(actionSet, action, caseSensitive); + if (booleanAction != null) + { + return booleanAction.GetStateDown(inputSource); + } + + return false; + } + + /// + /// Get the state down of an action by the action name and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + /// True when the action was false last update and is now true. Returns false again afterwards. + public static bool GetStateDown(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetStateDown(null, action, inputSource, caseSensitive); + } + + /// + /// Get the state up of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + /// True when the action was true last update and is now false. Returns false again afterwards. + public static bool GetStateUp(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Boolean booleanAction = GetAction(actionSet, action, caseSensitive); + if (booleanAction != null) + { + return booleanAction.GetStateUp(inputSource); + } + + return false; + } + + + /// + /// Get the state up of an action by the action name and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + /// True when the action was true last update and is now false. Returns false again afterwards. + public static bool GetStateUp(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetStateUp(null, action, inputSource, caseSensitive); + } + #endregion + + #region analog string accessors + /// + /// Get the float value of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results). (same as GetSingle) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static float GetFloat(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Single singleAction = GetAction(actionSet, action, caseSensitive); + if (singleAction != null) + { + return singleAction.GetAxis(inputSource); + } + + return 0; + } + + /// + /// Get the float value of an action by the action name and input source. Optionally case sensitive (for faster results). (same as GetSingle) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static float GetFloat(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetFloat(null, action, inputSource, caseSensitive); + } + + /// + /// Get the float value of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results). (same as GetFloat) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static float GetSingle(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Single singleAction = GetAction(actionSet, action, caseSensitive); + if (singleAction != null) + { + return singleAction.GetAxis(inputSource); + } + + return 0; + } + + /// + /// Get the float value of an action by the action name and input source. Optionally case sensitive (for faster results). (same as GetFloat) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static float GetSingle(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetFloat(null, action, inputSource, caseSensitive); + } + + /// + /// Get the Vector2 value of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static Vector2 GetVector2(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Vector2 vectorAction = GetAction(actionSet, action, caseSensitive); + if (vectorAction != null) + { + return vectorAction.GetAxis(inputSource); + } + + return Vector2.zero; + } + + /// + /// Get the Vector2 value of an action by the action name and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static Vector2 GetVector2(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetVector2(null, action, inputSource, caseSensitive); + } + + /// + /// Get the Vector3 value of an action by the action set name, action name, and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action set the action is contained in + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static Vector3 GetVector3(string actionSet, string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + SteamVR_Action_Vector3 vectorAction = GetAction(actionSet, action, caseSensitive); + if (vectorAction != null) + { + return vectorAction.GetAxis(inputSource); + } + + return Vector3.zero; + } + + /// + /// Get the Vector3 value of an action by the action name and input source. Optionally case sensitive (for faster results) + /// + /// The name of the action to get the state of + /// The input source to get the action state from + /// Whether or not the action set and action name searches should be case sensitive (case sensitive searches are faster) + public static Vector3 GetVector3(string action, SteamVR_Input_Sources inputSource, bool caseSensitive = false) + { + return GetVector3(null, action, inputSource, caseSensitive); + } + #endregion + + #endregion + + /// + /// Returns all of the action sets. If we're in the editor, doesn't rely on the actionSets field being filled. + /// + public static SteamVR_ActionSet[] GetActionSets() + { + return actionSets; + } + + /// + /// Returns all of the actions of the specified type. If we're in the editor, doesn't rely on the arrays being filled. + /// + /// The type of actions you want to get + public static T[] GetActions() where T : SteamVR_Action + { + Type type = typeof(T); + + if (type == typeof(SteamVR_Action)) + { + return actions as T[]; + } + else if (type == typeof(ISteamVR_Action_In)) + { + return actionsIn as T[]; + } + else if (type == typeof(ISteamVR_Action_Out)) + { + return actionsOut as T[]; + } + else if (type == typeof(SteamVR_Action_Boolean)) + { + return actionsBoolean as T[]; + } + else if (type == typeof(SteamVR_Action_Single)) + { + return actionsSingle as T[]; + } + else if (type == typeof(SteamVR_Action_Vector2)) + { + return actionsVector2 as T[]; + } + else if (type == typeof(SteamVR_Action_Vector3)) + { + return actionsVector3 as T[]; + } + else if (type == typeof(SteamVR_Action_Pose)) + { + return actionsPose as T[]; + } + else if (type == typeof(SteamVR_Action_Skeleton)) + { + return actionsSkeleton as T[]; + } + else if (type == typeof(SteamVR_Action_Vibration)) + { + return actionsVibration as T[]; + } + else + { + Debug.Log("[SteamVR] Wrong type."); + } + + return null; + } + + internal static bool ShouldMakeCopy() + { + bool shouldMakeCopy = SteamVR_Behaviour.isPlaying == false; + + return shouldMakeCopy; + } + + /// + /// Gets the localized name of the device that the action corresponds to. + /// + /// + /// + /// + /// VRInputString_Hand - Which hand the origin is in. E.g. "Left Hand" + /// VRInputString_ControllerType - What kind of controller the user has in that hand.E.g. "Vive Controller" + /// VRInputString_InputSource - What part of that controller is the origin. E.g. "Trackpad" + /// VRInputString_All - All of the above. E.g. "Left Hand Vive Controller Trackpad" + /// + /// + public static string GetLocalizedName(ulong originHandle, params EVRInputStringBits[] localizedParts) + { + int localizedPartsMask = 0; + + for (int partIndex = 0; partIndex < localizedParts.Length; partIndex++) + localizedPartsMask |= (int)localizedParts[partIndex]; + + StringBuilder stringBuilder = new StringBuilder(500); + OpenVR.Input.GetOriginLocalizedName(originHandle, stringBuilder, 500, localizedPartsMask); + + return stringBuilder.ToString(); + } + + public static bool CheckOldLocation() + { +#if UNITY_EDITOR + DirectoryInfo dataPath = new DirectoryInfo(Application.dataPath); + string projectRoot = dataPath.Parent.FullName; + + string fullOldActionsPath = Path.Combine(projectRoot, SteamVR_Settings.instance.actionsFilePath); + if (File.Exists(fullOldActionsPath)) + { + SteamVR_Input_ActionFile oldActionsFile = SteamVR_Input_ActionFile.Open(fullOldActionsPath); + string[] actionAndBindingFiles = oldActionsFile.GetFilesToCopy(true); + + string newActionsFilePath = GetActionsFilePath(true); + bool shouldCopy = true; + bool verified = false; + if (File.Exists(newActionsFilePath)) + { + shouldCopy = UnityEditor.EditorUtility.DisplayDialog("SteamVR", "SteamVR Unity Plugin detected an Action Manifest file in the legacy location (project root). You also have an Action Manifest File in the new location (streaming assets). Would you like to overwrite the files in streaming assets?", "Yes", "No"); + verified = true; + } + + if (shouldCopy) + { + string newFolderPath = GetActionsFileFolder(); + + foreach (string filePath in actionAndBindingFiles) + { + FileInfo oldFile = new FileInfo(filePath); + string newFilePath = Path.Combine(newFolderPath, oldFile.Name); + + if (File.Exists(newFilePath)) + { + FileInfo newFile = new FileInfo(newFilePath); + newFile.IsReadOnly = false; + + newFile.Delete(); + } + + oldFile.IsReadOnly = false; + oldFile.MoveTo(newFilePath); + } + + if (verified == false) + { + UnityEditor.EditorUtility.DisplayDialog("SteamVR", "SteamVR Unity Plugin detected an Action Manifest file in the legacy location (project root). We've automatically moved the files to the new location (" + GetActionsFileFolder() + ").", "Ok"); + } + else + { + UnityEditor.EditorUtility.DisplayDialog("SteamVR", "Moving files to the new location (" + GetActionsFileFolder() + ") is complete.", "Ok"); + } + + UnityEditor.AssetDatabase.Refresh(); + return true; + } + } +#endif + return false; + } + + + /// Tell SteamVR that we're using the actions file at the path defined in SteamVR_Settings. + public static void IdentifyActionsFile(bool showLogs = true) + { + string fullPath = GetActionsFilePath(); + if (File.Exists(fullPath)) + { + if (OpenVR.Input == null) + { + Debug.LogError("[SteamVR] Could not instantiate OpenVR Input interface."); + return; + } + + EVRInputError err = OpenVR.Input.SetActionManifestPath(fullPath); + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] Error loading action manifest into SteamVR: " + err.ToString()); + else + { + int numActions = 0; + if (SteamVR_Input.actions != null) + { + numActions = SteamVR_Input.actions.Length; + + if (showLogs) + Debug.Log(string.Format("[SteamVR] Successfully loaded {0} actions from action manifest into SteamVR ({1})", numActions, fullPath)); + } + else + { + if (showLogs) + Debug.LogWarning("[SteamVR] No actions found, but the action manifest was loaded. This usually means you haven't generated actions. Window -> SteamVR Input -> Save and Generate."); + } + } + } + else + { + if (showLogs) + Debug.LogError("[SteamVR] Could not find actions file at: " + fullPath); + } + } + + /// + /// Does the actions file in memory differ from the one on disk as determined by a md5 hash + /// + public static bool HasFileInMemoryBeenModified() + { + string fullPath = GetActionsFilePath(); + + string jsonText = null; + + if (File.Exists(fullPath)) + { + jsonText = System.IO.File.ReadAllText(fullPath); + } + else + { + return true; + } + + string newHashFromFile = SteamVR_Utils.GetBadMD5Hash(jsonText); + + string newJSON = JsonConvert.SerializeObject(SteamVR_Input.actionFile, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + string newHashFromMemory = SteamVR_Utils.GetBadMD5Hash(newJSON); + + return newHashFromFile != newHashFromMemory; + } + + public static bool CreateEmptyActionsFile(bool completelyEmpty = false) + { + string actionsFilePath = GetActionsFilePath(); + + if (File.Exists(actionsFilePath)) + { + Debug.LogErrorFormat("[SteamVR] Actions file already exists in project root: {0}", actionsFilePath); + return false; + } + + actionFile = new SteamVR_Input_ActionFile(); + + if (completelyEmpty == false) + { + actionFile.action_sets.Add(SteamVR_Input_ActionFile_ActionSet.CreateNew()); + actionFile.actions.Add(SteamVR_Input_ActionFile_Action.CreateNew(actionFile.action_sets[0].shortName, + SteamVR_ActionDirections.In, SteamVR_Input_ActionFile_ActionTypes.boolean)); + } + + string newJSON = JsonConvert.SerializeObject(actionFile, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + File.WriteAllText(actionsFilePath, newJSON); + + actionFile.InitializeHelperLists(); + fileInitialized = true; + return true; + } + + public static bool DoesActionsFileExist() + { + return File.Exists(GetActionsFilePath()); + } + + /// + /// Load from disk and deserialize the actions file + /// + /// Force a refresh of this file from disk + public static bool InitializeFile(bool force = false, bool showErrors = true) + { + bool actionsFileExists = DoesActionsFileExist(); + string actionsFilePath = GetActionsFilePath(); + + string jsonText = null; + + if (actionsFileExists) + { + jsonText = System.IO.File.ReadAllText(actionsFilePath); + } + else + { + if (showErrors) + Debug.LogErrorFormat("[SteamVR] Actions file does not exist in project root: {0}", actionsFilePath); + + return false; + } + + if (fileInitialized == true || (fileInitialized == true && force == false)) + { + string newHash = SteamVR_Utils.GetBadMD5Hash(jsonText); + + if (newHash == actionFileHash) + { + return true; + } + + actionFileHash = newHash; + } + + actionFile = SteamVR_Input_ActionFile.Open(GetActionsFilePath()); + fileInitialized = true; + return true; + } + + public static string GetActionsFileFolder(bool fullPath = true) + { + string streamingAssets = Application.streamingAssetsPath; + if (Directory.Exists(streamingAssets) == false) + Directory.CreateDirectory(streamingAssets); + + string streamingAssets_SteamVR = Path.Combine(streamingAssets, "SteamVR"); + if (Directory.Exists(streamingAssets_SteamVR) == false) + Directory.CreateDirectory(streamingAssets_SteamVR); + + return streamingAssets_SteamVR; + } + + public static string GetActionsFilePath(bool fullPath = true) + { + string streamingAssets_SteamVR = GetActionsFileFolder(fullPath); + string path = Path.Combine(streamingAssets_SteamVR, SteamVR_Settings.instance.actionsFilePath); + + return SteamVR_Utils.SanitizePath(path); + } + + + /// + /// Deletes the action manifest file and all the default bindings it had listed in the default bindings section + /// + /// True if we deleted an action file, false if not. + public static bool DeleteManifestAndBindings() + { + if (DoesActionsFileExist() == false) + return false; + + InitializeFile(); + + string[] filesToDelete = actionFile.GetFilesToCopy(); + foreach (string bindingFilePath in filesToDelete) + { + FileInfo bindingFileInfo = new FileInfo(bindingFilePath); + bindingFileInfo.IsReadOnly = false; + File.Delete(bindingFilePath); + } + + string actionsFilePath = GetActionsFilePath(); + if (File.Exists(actionsFilePath)) + { + FileInfo actionFileInfo = new FileInfo(actionsFilePath); + actionFileInfo.IsReadOnly = false; + File.Delete(actionsFilePath); + + actionFile = null; + fileInitialized = false; + + return true; + } + + return false; + } + + /// + /// Open the binding UI in the HMD. Can open to a specific controller's binding and to a specific action set. + /// + /// Optional. The action set to highlight (will default to the first set) + /// Optional. The device's binding to open (will default to right hand) + public static void OpenBindingUI(SteamVR_ActionSet actionSetToEdit = null, SteamVR_Input_Sources deviceBindingToEdit = SteamVR_Input_Sources.Any) + { + ulong deviceHandle = SteamVR_Input_Source.GetHandle(deviceBindingToEdit); + ulong actionSetHandle = 0; + + if (actionSetToEdit != null) + actionSetHandle = actionSetToEdit.handle; + + OpenVR.Input.OpenBindingUI(null, actionSetHandle, deviceHandle, false); + } + +#if UNITY_EDITOR + public static string GetResourcesFolderPath(bool fromAssetsDirectory = false) + { + string inputFolder = string.Format("Assets/{0}", SteamVR_Settings.instance.steamVRInputPath); + + string path = Path.Combine(inputFolder, "Resources"); + + bool createdDirectory = false; + if (Directory.Exists(inputFolder) == false) + { + Directory.CreateDirectory(inputFolder); + createdDirectory = true; + } + + + if (Directory.Exists(path) == false) + { + Directory.CreateDirectory(path); + createdDirectory = true; + } + + if (createdDirectory) + UnityEditor.AssetDatabase.Refresh(); + + if (fromAssetsDirectory == false) + return path.Replace("Assets/", ""); + else + return path; + } + + + + private static bool checkingSetup = false; + private static bool openingSetup = false; + public static bool IsOpeningSetup() { return openingSetup; } + private static void CheckSetup() + { + if (checkingSetup == false && openingSetup == false && (SteamVR_Input.actions == null || SteamVR_Input.actions.Length == 0)) + { + checkingSetup = true; + Debug.Break(); + + bool open = UnityEditor.EditorUtility.DisplayDialog("[SteamVR]", "It looks like you haven't generated actions for SteamVR Input yet. Would you like to open the SteamVR Input window?", "Yes", "No"); + if (open) + { + openingSetup = true; + UnityEditor.EditorApplication.isPlaying = false; + Type editorWindowType = FindType("Valve.VR.SteamVR_Input_EditorWindow"); + if (editorWindowType != null) + { + var window = UnityEditor.EditorWindow.GetWindow(editorWindowType, false, "SteamVR Input", true); + if (window != null) + window.Show(); + } + } + else + { + Debug.LogError("[SteamVR] This version of SteamVR will not work if you do not create and generate actions. Please open the SteamVR Input window or downgrade to version 1.2.3 (on github)"); + } + checkingSetup = false; + } + } + + private static Type FindType(string typeName) + { + var type = Type.GetType(typeName); + if (type != null) return type; + foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) + { + type = a.GetType(typeName); + if (type != null) + return type; + } + return null; + } +#endif + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs.meta new file mode 100644 index 00000000..bbb43526 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input.cs.meta @@ -0,0 +1,71 @@ +fileFormatVersion: 2 +guid: 36fa5b356bc9b9f4792bb2c38b8d8b5f +timeCreated: 1544852187 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - instance__default: {fileID: 11400000, guid: 0d1e20c7ce10b6f43b3f035fcd845963, + type: 2} + - instance___actions_default_in_MoveLeft: {fileID: 11400000, guid: 644b5e773109a1042834fcfcdf16cdde, + type: 2} + - instance___actions_default_in_UseLeft: {fileID: 11400000, guid: 3ce7063d595d7f642bf145bc8b3112ad, + type: 2} + - instance___actions_default_in_GripLeft: {fileID: 11400000, guid: 3e2d026209eff5546a50cd9d19ed5fd2, + type: 2} + - instance___actions_default_in_MoveRight: {fileID: 11400000, guid: 1148ab5daa5fa08478e9a0eeba0ea9ec, + type: 2} + - instance___actions_default_in_UseRight: {fileID: 11400000, guid: 18de162de53cbca42829380e5b4f9de2, + type: 2} + - instance___actions_default_in_GripRight: {fileID: 11400000, guid: e54c6d9ac7e2e7243a40a3a4878cd0e4, + type: 2} + - instance___actions_default_in_PoseRight: {fileID: 11400000, guid: 87905fb081a4c504b923ca4ac770cfeb, + type: 2} + - instance___actions_default_in_PoseLeft: {fileID: 11400000, guid: 75e4798b27c821f43b1123a13898313c, + type: 2} + - instance___actions_default_in_SkeletonLeft: {fileID: 11400000, guid: 2976b089587b3c24587ac8ab443bf085, + type: 2} + - instance___actions_default_in_SkeletonRight: {fileID: 11400000, guid: b143487871e42444aab4ac13efc64ce3, + type: 2} + - instance___actions_default_in_InteractLeft: {fileID: 11400000, guid: 436fa2cdc587e184b9dd9f6b80aae648, + type: 2} + - instance___actions_default_in_InteractRight: {fileID: 11400000, guid: 9d039000f41a8fc45ae135164e949b05, + type: 2} + - instance___actions_default_in_TeleportLeft: {fileID: 11400000, guid: b7a681135a0ad074c903dde256616aff, + type: 2} + - instance___actions_default_in_TeleportRight: {fileID: 11400000, guid: 078682bf487d2454f80d5d0a81a94060, + type: 2} + - instance___actions_default_in_PinchForceLeft: {fileID: 11400000, guid: ad9b1ee6855b6be42a85c28c041dc7b5, + type: 2} + - instance___actions_default_in_GripForceLeft: {fileID: 11400000, guid: 0fdde54056cc46c4c8ea8f01583a1118, + type: 2} + - instance___actions_default_in_PinchForceRight: {fileID: 11400000, guid: cbc39c9fb3e4ba04193b2ce9c320c6fc, + type: 2} + - instance___actions_default_in_GripForceRight: {fileID: 11400000, guid: 383e7132b624b08429395c74a495e412, + type: 2} + - instance___actions_default_out_VibrateLeft: {fileID: 11400000, guid: d91c98e803a76cc4f8ce87c066cab82c, + type: 2} + - instance___actions_default_out_VibrateRight: {fileID: 11400000, guid: 4261c30da8676114884b5249ac2a9df0, + type: 2} + - instance_hands: {fileID: 11400000, guid: e0f18f490c3b0c641b7d498d7f89fcf9, type: 2} + - instance___actions_hands_in_IndexCurlLeft: {fileID: 11400000, guid: 40f90426848c6194eb6d5ef436b466d7, + type: 2} + - instance___actions_hands_in_MiddleCurlLeft: {fileID: 11400000, guid: 117f365bb09bd9740918dc824ee26774, + type: 2} + - instance___actions_hands_in_RingCurlLeft: {fileID: 11400000, guid: 5782949d8952ebe4d92f5c081d6d1f9e, + type: 2} + - instance___actions_hands_in_PinkyCurlLeft: {fileID: 11400000, guid: 24fca5b37f6d95547909338aedbcc71c, + type: 2} + - instance___actions_hands_in_IndexCurlRight: {fileID: 11400000, guid: 1a5712b61810ac847a82214a7cae2f03, + type: 2} + - instance___actions_hands_in_MiddleCurlRight: {fileID: 11400000, guid: 240fa8b0dc9a220488e1304befa95032, + type: 2} + - instance___actions_hands_in_RingCurlRight: {fileID: 11400000, guid: 22d6b216fbb546c44862aa17a428bf42, + type: 2} + - instance___actions_hands_in_PinkyCurlRight: {fileID: 11400000, guid: d747312e731775548a1e5d37c1ecc872, + type: 2} + executionOrder: -31000 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs new file mode 100644 index 00000000..fe03b508 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs @@ -0,0 +1,668 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +using System.Linq; +using Valve.Newtonsoft.Json; +using System.IO; + +namespace Valve.VR +{ + [System.Serializable] + public class SteamVR_Input_ActionFile + { + public List actions = new List(); + public List action_sets = new List(); + public List default_bindings = new List(); + public List> localization = new List>(); + + [JsonIgnore] + public string filePath; + + [JsonIgnore] + public List localizationHelperList = new List(); + + public void InitializeHelperLists() + { + foreach (var actionset in action_sets) + { + actionset.actionsInList = new List(actions.Where(action => action.path.StartsWith(actionset.name) && SteamVR_Input_ActionFile_ActionTypes.listIn.Contains(action.type))); + actionset.actionsOutList = new List(actions.Where(action => action.path.StartsWith(actionset.name) && SteamVR_Input_ActionFile_ActionTypes.listOut.Contains(action.type))); + actionset.actionsList = new List(actions.Where(action => action.path.StartsWith(actionset.name))); + } + + foreach (var item in localization) + { + localizationHelperList.Add(new SteamVR_Input_ActionFile_LocalizationItem(item)); + } + } + + public void SaveHelperLists() + { + //fix actions list + foreach (var actionset in action_sets) + { + actionset.actionsList.Clear(); + actionset.actionsList.AddRange(actionset.actionsInList); + actionset.actionsList.AddRange(actionset.actionsOutList); + } + + actions.Clear(); + + foreach (var actionset in action_sets) + { + actions.AddRange(actionset.actionsInList); + actions.AddRange(actionset.actionsOutList); + } + + localization.Clear(); + foreach (var item in localizationHelperList) + { + Dictionary localizationItem = new Dictionary(); + localizationItem.Add(SteamVR_Input_ActionFile_LocalizationItem.languageTagKeyName, item.language); + + foreach (var itemItem in item.items) + { + localizationItem.Add(itemItem.Key, itemItem.Value); + } + + localization.Add(localizationItem); + } + } + + public static string GetShortName(string name) + { + string fullName = name; + int lastSlash = fullName.LastIndexOf('/'); + if (lastSlash != -1) + { + if (lastSlash == fullName.Length - 1) + { + fullName = fullName.Remove(lastSlash); + lastSlash = fullName.LastIndexOf('/'); + if (lastSlash == -1) + { + return GetCodeFriendlyName(fullName); + } + } + return GetCodeFriendlyName(fullName.Substring(lastSlash + 1)); + } + + return GetCodeFriendlyName(fullName); + } + + public static string GetCodeFriendlyName(string name) + { + name = name.Replace('/', '_').Replace(' ', '_'); + + if (char.IsLetter(name[0]) == false) + name = "_" + name; + + for (int charIndex = 0; charIndex < name.Length; charIndex++) + { + if (char.IsLetterOrDigit(name[charIndex]) == false && name[charIndex] != '_') + { + name = name.Remove(charIndex, 1); + name = name.Insert(charIndex, "_"); + } + } + + return name; + } + + public string[] GetFilesToCopy(bool throwErrors = false) + { + List files = new List(); + + FileInfo actionFileInfo = new FileInfo(this.filePath); + string path = actionFileInfo.Directory.FullName; + + files.Add(this.filePath); + + foreach (var binding in default_bindings) + { + string bindingPath = Path.Combine(path, binding.binding_url); + + if (File.Exists(bindingPath)) + files.Add(bindingPath); + else + { + if (throwErrors) + { + Debug.LogError("[SteamVR] Could not bind binding file specified by the actions.json manifest: " + bindingPath); + } + } + } + + return files.ToArray(); + } + + public void CopyFilesToPath(string toPath, bool overwrite) + { + string[] files = SteamVR_Input.actionFile.GetFilesToCopy(); + + foreach (string file in files) + { + FileInfo bindingInfo = new FileInfo(file); + string newFilePath = Path.Combine(toPath, bindingInfo.Name); + + bool exists = false; + if (File.Exists(newFilePath)) + exists = true; + + if (exists) + { + if (overwrite) + { + FileInfo existingFile = new FileInfo(newFilePath); + existingFile.IsReadOnly = false; + existingFile.Delete(); + + File.Copy(file, newFilePath); + + RemoveAppKey(newFilePath); + + Debug.Log("[SteamVR] Copied (overwrote) SteamVR Input file at path: " + newFilePath); + } + else + { + Debug.Log("[SteamVR] Skipped writing existing file at path: " + newFilePath); + } + } + else + { + File.Copy(file, newFilePath); + + RemoveAppKey(newFilePath); + + Debug.Log("[SteamVR] Copied SteamVR Input file to folder: " + newFilePath); + } + + } + } + + + private const string findString_appKeyStart = "\"app_key\""; + private const string findString_appKeyEnd = "\","; + private static void RemoveAppKey(string newFilePath) + { + if (File.Exists(newFilePath)) + { + string jsonText = System.IO.File.ReadAllText(newFilePath); + + string findString = "\"app_key\""; + int stringStart = jsonText.IndexOf(findString); + + if (stringStart == -1) + return; //no app key + + int stringEnd = jsonText.IndexOf("\",", stringStart); + + if (stringEnd == -1) + return; //no end? + + stringEnd += findString_appKeyEnd.Length; + + int stringLength = stringEnd - stringStart; + + string newJsonText = jsonText.Remove(stringStart, stringLength); + + FileInfo file = new FileInfo(newFilePath); + file.IsReadOnly = false; + + File.WriteAllText(newFilePath, newJsonText); + } + } + public static SteamVR_Input_ActionFile Open(string path) + { + if (File.Exists(path)) + { + string jsonText = File.ReadAllText(path); + + SteamVR_Input_ActionFile actionFile = Valve.Newtonsoft.Json.JsonConvert.DeserializeObject(jsonText); + actionFile.filePath = path; + actionFile.InitializeHelperLists(); + + return actionFile; + } + + return null; + } + + + public void Save(string path) + { + FileInfo existingActionsFile = new FileInfo(path); + if (existingActionsFile.Exists) + { + existingActionsFile.IsReadOnly = false; + } + + //SanitizeActionFile(); //todo: shouldn't we be doing this? + + string json = JsonConvert.SerializeObject(this, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + + File.WriteAllText(path, json); + } + } + + public enum SteamVR_Input_ActionFile_DefaultBinding_ControllerTypes + { + vive, //hmd + vive_pro, //hmd + vive_controller, + generic, + holographic_controller, + oculus_touch, + gamepad, + knuckles, + index_hmd, //hmd + vive_cosmos_controller, + rift, //hmd + vive_tracker_camera, + vive_tracker, + } + + [System.Serializable] + public class SteamVR_Input_ActionFile_DefaultBinding + { + public string controller_type; + public string binding_url; + + public SteamVR_Input_ActionFile_DefaultBinding GetCopy() + { + SteamVR_Input_ActionFile_DefaultBinding newDefaultBinding = new SteamVR_Input_ActionFile_DefaultBinding(); + newDefaultBinding.controller_type = this.controller_type; + newDefaultBinding.binding_url = this.binding_url; + return newDefaultBinding; + } + } + + [System.Serializable] + public class SteamVR_Input_ActionFile_ActionSet + { + [JsonIgnore] + private const string actionSetInstancePrefix = "instance_"; + + public string name; + public string usage; + + [JsonIgnore] + public string codeFriendlyName + { + get + { + return SteamVR_Input_ActionFile.GetCodeFriendlyName(name); + } + } + + [JsonIgnore] + public string shortName + { + get + { + int lastIndex = name.LastIndexOf('/'); + if (lastIndex == name.Length - 1) + return string.Empty; + + return SteamVR_Input_ActionFile.GetShortName(name); + } + } + + public void SetNewShortName(string newShortName) + { + name = GetPathFromName(newShortName); + } + + public static string CreateNewName() + { + return GetPathFromName("NewSet"); + } + + private const string nameTemplate = "/actions/{0}"; + public static string GetPathFromName(string name) + { + return string.Format(nameTemplate, name); + } + + public static SteamVR_Input_ActionFile_ActionSet CreateNew() + { + return new SteamVR_Input_ActionFile_ActionSet() { name = CreateNewName() }; + } + + public SteamVR_Input_ActionFile_ActionSet GetCopy() + { + SteamVR_Input_ActionFile_ActionSet newSet = new SteamVR_Input_ActionFile_ActionSet(); + newSet.name = this.name; + newSet.usage = this.usage; + return newSet; + } + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_ActionFile_ActionSet) + { + SteamVR_Input_ActionFile_ActionSet set = (SteamVR_Input_ActionFile_ActionSet)obj; + if (set == this) + return true; + + if (set.name == this.name) + return true; + + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + [JsonIgnore] + public List actionsInList = new List(); + + [JsonIgnore] + public List actionsOutList = new List(); + + [JsonIgnore] + public List actionsList = new List(); + } + + public enum SteamVR_Input_ActionFile_Action_Requirements + { + optional, + suggested, + mandatory, + } + + [System.Serializable] + public class SteamVR_Input_ActionFile_Action + { + [JsonIgnore] + private static string[] _requirementValues; + [JsonIgnore] + public static string[] requirementValues + { + get + { + if (_requirementValues == null) + _requirementValues = System.Enum.GetNames(typeof(SteamVR_Input_ActionFile_Action_Requirements)); + + return _requirementValues; + } + } + + public string name; + public string type; + public string scope; + public string skeleton; + public string requirement; + + public SteamVR_Input_ActionFile_Action GetCopy() + { + SteamVR_Input_ActionFile_Action newAction = new SteamVR_Input_ActionFile_Action(); + newAction.name = this.name; + newAction.type = this.type; + newAction.scope = this.scope; + newAction.skeleton = this.skeleton; + newAction.requirement = this.requirement; + return newAction; + } + + [JsonIgnore] + public SteamVR_Input_ActionFile_Action_Requirements requirementEnum + { + get + { + for (int index = 0; index < requirementValues.Length; index++) + { + if (string.Equals(requirementValues[index], requirement, System.StringComparison.CurrentCultureIgnoreCase)) + { + return (SteamVR_Input_ActionFile_Action_Requirements)index; + } + } + + return SteamVR_Input_ActionFile_Action_Requirements.suggested; + } + set + { + requirement = value.ToString(); + } + } + + [JsonIgnore] + public string codeFriendlyName + { + get + { + return SteamVR_Input_ActionFile.GetCodeFriendlyName(name); + } + } + + [JsonIgnore] + public string shortName + { + get + { + return SteamVR_Input_ActionFile.GetShortName(name); + } + } + + [JsonIgnore] + public string path + { + get + { + int lastIndex = name.LastIndexOf('/'); + if (lastIndex != -1 && lastIndex + 1 < name.Length) + { + return name.Substring(0, lastIndex + 1); + } + + return name; + } + } + + private const string nameTemplate = "/actions/{0}/{1}/{2}"; + public static string CreateNewName(string actionSet, string direction) + { + return string.Format(nameTemplate, actionSet, direction, "NewAction"); + } + public static string CreateNewName(string actionSet, SteamVR_ActionDirections direction, string actionName) + { + return string.Format(nameTemplate, actionSet, direction.ToString().ToLower(), actionName); + } + + public static SteamVR_Input_ActionFile_Action CreateNew(string actionSet, SteamVR_ActionDirections direction, string actionType) + { + return new SteamVR_Input_ActionFile_Action() { name = CreateNewName(actionSet, direction.ToString().ToLower()), type = actionType }; + } + + [JsonIgnore] + public SteamVR_ActionDirections direction + { + get + { + if (type.ToLower() == SteamVR_Input_ActionFile_ActionTypes.vibration) + return SteamVR_ActionDirections.Out; + + return SteamVR_ActionDirections.In; + } + } + + protected const string prefix = "/actions/"; + + [JsonIgnore] + public string actionSet + { + get + { + int setEnd = name.IndexOf('/', prefix.Length); + if (setEnd == -1) + return string.Empty; + + return name.Substring(0, setEnd); + } + } + + public void SetNewActionSet(string newSetName) + { + name = string.Format(nameTemplate, newSetName, direction.ToString().ToLower(), shortName); + } + + public override string ToString() + { + return shortName; + } + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_ActionFile_Action) + { + SteamVR_Input_ActionFile_Action action = (SteamVR_Input_ActionFile_Action)obj; + if (this == obj) + return true; + + if (this.name == action.name && this.type == action.type && this.skeleton == action.skeleton && this.requirement == action.requirement) + return true; + + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + public class SteamVR_Input_ActionFile_LocalizationItem + { + public const string languageTagKeyName = "language_tag"; + + public string language; + public Dictionary items = new Dictionary(); + + public SteamVR_Input_ActionFile_LocalizationItem(string newLanguage) + { + language = newLanguage; + } + + public SteamVR_Input_ActionFile_LocalizationItem(Dictionary dictionary) + { + if (dictionary == null) + return; + + if (dictionary.ContainsKey(languageTagKeyName)) + language = (string)dictionary[languageTagKeyName]; + else + Debug.Log("[SteamVR] Input: Error in actions file, no language_tag in localization array item."); + + foreach (KeyValuePair item in dictionary) + { + if (item.Key != languageTagKeyName) + items.Add(item.Key, (string)item.Value); + } + } + } + + public class SteamVR_Input_ManifestFile + { + public string source; + public List applications; + } + + public class SteamVR_Input_ManifestFile_Application + { + public string app_key; + public string launch_type; + public string url; + public string binary_path_windows; + public string binary_path_linux; + public string binary_path_osx; + public string action_manifest_path; + //public List bindings = new List(); + public string image_path; + public Dictionary strings = new Dictionary(); + } + + public class SteamVR_Input_Unity_AssemblyFile_Definition + { + public string name = "SteamVR_Actions"; + public string[] references = new string[] { "SteamVR" }; + public string[] optionalUnityReferences = new string[0]; + public string[] includePlatforms = new string[0]; + public string[] excludePlatforms = new string[0]; + public bool allowUnsafeCode = false; + public bool overrideReferences = false; + public string[] precompiledReferences = new string[0]; + public bool autoReferenced = false; + public string[] defineConstraints = new string[0]; + } + + public class SteamVR_Input_ManifestFile_ApplicationString + { + public string name; + } + + public class SteamVR_Input_ManifestFile_Application_Binding + { + public string controller_type; + public string binding_url; + } + + public class SteamVR_Input_ManifestFile_Application_Binding_ControllerTypes + { + public static string oculus_touch = "oculus_touch"; + public static string vive_controller = "vive_controller"; + public static string knuckles = "knuckles"; + public static string holographic_controller = "holographic_controller"; + public static string vive = "vive"; + public static string vive_pro = "vive_pro"; + public static string holographic_hmd = "holographic_hmd"; + public static string rift = "rift"; + public static string vive_tracker_camera = "vive_tracker_camera"; + public static string vive_cosmos = "vive_cosmos"; + public static string vive_cosmos_controller = "vive_cosmos_controller"; + public static string index_hmd = "index_hmd"; + } + + static public class SteamVR_Input_ActionFile_ActionTypes + { + public static string boolean = "boolean"; + public static string vector1 = "vector1"; + public static string vector2 = "vector2"; + public static string vector3 = "vector3"; + public static string vibration = "vibration"; + public static string pose = "pose"; + public static string skeleton = "skeleton"; + + public static string skeletonLeftPath = "\\skeleton\\hand\\left"; + public static string skeletonRightPath = "\\skeleton\\hand\\right"; + + public static string[] listAll = new string[] { boolean, vector1, vector2, vector3, vibration, pose, skeleton }; + public static string[] listIn = new string[] { boolean, vector1, vector2, vector3, pose, skeleton }; + public static string[] listOut = new string[] { vibration }; + public static string[] listSkeletons = new string[] { skeletonLeftPath, skeletonRightPath }; + } + + static public class SteamVR_Input_ActionFile_ActionSet_Usages + { + public static string leftright = "leftright"; + public static string single = "single"; + public static string hidden = "hidden"; + + public static string leftrightDescription = "per hand"; + public static string singleDescription = "mirrored"; + public static string hiddenDescription = "hidden"; + + public static string[] listValues = new string[] { leftright, single, hidden }; + public static string[] listDescriptions = new string[] { leftrightDescription, singleDescription, hiddenDescription }; + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs.meta new file mode 100644 index 00000000..e1308201 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionFile.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a46ca29bcb0df3e4ea80651c2220adbf +timeCreated: 1544852187 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs new file mode 100644 index 00000000..43b23343 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs @@ -0,0 +1,12 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + + +namespace Valve.VR +{ + public enum SteamVR_Input_ActionScopes + { + ActionSet, + Application, + Global, + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs.meta new file mode 100644 index 00000000..5224b181 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionScopes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b8b3d557389a8d84496ba0aadf2faad5 +timeCreated: 1544852187 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs new file mode 100644 index 00000000..e7bbc819 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs @@ -0,0 +1,12 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + + +namespace Valve.VR +{ + public enum SteamVR_Input_ActionSetUsages + { + LeftRight, + Single, + Hidden, + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs.meta new file mode 100644 index 00000000..83609df0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_ActionSetUsages.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d74d007b6f4b4674a9cfd320b9389b66 +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs new file mode 100644 index 00000000..362301ee --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs @@ -0,0 +1,281 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +using System.Linq; +using Valve.Newtonsoft.Json; +using System.IO; + +namespace Valve.VR +{ + [System.Serializable] + public class SteamVR_Input_BindingFile + { + public string app_key; + public Dictionary bindings = new Dictionary(); + public string controller_type; + public string description; + public string name; + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_ActionList + { + public List chords = new List(); + public List poses = new List(); + public List haptics = new List(); + public List sources = new List(); + public List skeleton = new List(); + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Chord + { + public string output; + public List> inputs = new List>(); + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Chord) + { + SteamVR_Input_BindingFile_Chord chord = (SteamVR_Input_BindingFile_Chord)obj; + + if (this.output == chord.output && this.inputs != null && chord.inputs != null) + { + if (this.inputs.Count == chord.inputs.Count) + { + for (int thisIndex = 0; thisIndex < this.inputs.Count; thisIndex++) + { + if (this.inputs[thisIndex] != null && chord.inputs[thisIndex] != null && this.inputs[thisIndex].Count == chord.inputs[thisIndex].Count) + { + for (int thisSubIndex = 0; thisSubIndex < this.inputs[thisIndex].Count; thisSubIndex++) + { + if (this.inputs[thisIndex][thisSubIndex] != chord.inputs[thisIndex][thisSubIndex]) + { + return false; + } + } + return true; + } + } + } + } + + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Pose + { + public string output; + public string path; + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Pose) + { + SteamVR_Input_BindingFile_Pose pose = (SteamVR_Input_BindingFile_Pose)obj; + if (pose.output == this.output && pose.path == this.path) + return true; + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Haptic + { + public string output; + public string path; + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Haptic) + { + SteamVR_Input_BindingFile_Haptic pose = (SteamVR_Input_BindingFile_Haptic)obj; + if (pose.output == this.output && pose.path == this.path) + return true; + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Skeleton + { + public string output; + public string path; + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Skeleton) + { + SteamVR_Input_BindingFile_Skeleton pose = (SteamVR_Input_BindingFile_Skeleton)obj; + if (pose.output == this.output && pose.path == this.path) + return true; + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Source + { + public string path; + public string mode; + public SteamVR_Input_BindingFile_Source_Input_StringDictionary parameters = new SteamVR_Input_BindingFile_Source_Input_StringDictionary(); + public SteamVR_Input_BindingFile_Source_Input inputs = new SteamVR_Input_BindingFile_Source_Input(); + + protected const string outputKeyName = "output"; + + public string GetOutput() + { + foreach (var input in inputs) + { + foreach (var entry in input.Value) + { + if (entry.Key == outputKeyName) + { + return entry.Value; + } + } + } + + return null; + } + + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Source) + { + SteamVR_Input_BindingFile_Source pose = (SteamVR_Input_BindingFile_Source)obj; + if (pose.mode == this.mode && pose.path == this.path) + { + bool parametersEqual = false; + if (parameters != null && pose.parameters != null) + { + if (this.parameters.Equals(pose.parameters)) + parametersEqual = true; + } + else if (parameters == null && pose.parameters == null) + parametersEqual = true; + + if (parametersEqual) + { + bool inputsEqual = false; + if (inputs != null && pose.inputs != null) + { + if (this.inputs.Equals(pose.inputs)) + inputsEqual = true; + } + else if (inputs == null && pose.inputs == null) + inputsEqual = true; + + return inputsEqual; + } + } + + return false; + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Source_Input : Dictionary + { + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Source_Input) + { + SteamVR_Input_BindingFile_Source_Input sourceInput = (SteamVR_Input_BindingFile_Source_Input)obj; + + if (this == sourceInput) + return true; + else + { + if (this.Count == sourceInput.Count) + { + foreach (var element in this) + { + if (sourceInput.ContainsKey(element.Key) == false) + return false; + if (this[element.Key].Equals(sourceInput[element.Key]) == false) + return false; + } + return true; + } + } + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + [System.Serializable] + public class SteamVR_Input_BindingFile_Source_Input_StringDictionary : Dictionary + { + public override bool Equals(object obj) + { + if (obj is SteamVR_Input_BindingFile_Source_Input_StringDictionary) + { + SteamVR_Input_BindingFile_Source_Input_StringDictionary stringDictionary = (SteamVR_Input_BindingFile_Source_Input_StringDictionary)obj; + + if (this == stringDictionary) + return true; + + return (this.Count == stringDictionary.Count && !this.Except(stringDictionary).Any()); + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs.meta new file mode 100644 index 00000000..9c1af0e1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7a2acf5cecdd8444c97bc579ba230dde +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs new file mode 100644 index 00000000..ec049366 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs @@ -0,0 +1,26 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + + +namespace Valve.VR +{ + public class SteamVR_Input_Generator_Names + { + public const string fullActionsClassName = "Valve.VR.SteamVR_Actions"; + public const string actionsClassName = "SteamVR_Actions"; + + public const string preinitializeMethodName = "PreInitialize"; + + public const string actionsFieldName = "actions"; + public const string actionsInFieldName = "actionsIn"; + public const string actionsOutFieldName = "actionsOut"; + public const string actionsVibrationFieldName = "actionsVibration"; + public const string actionsPoseFieldName = "actionsPose"; + public const string actionsBooleanFieldName = "actionsBoolean"; + public const string actionsSingleFieldName = "actionsSingle"; + public const string actionsVector2FieldName = "actionsVector2"; + public const string actionsVector3FieldName = "actionsVector3"; + public const string actionsSkeletonFieldName = "actionsSkeleton"; + public const string actionsNonPoseNonSkeletonIn = "actionsNonPoseNonSkeletonIn"; + public const string actionSetsFieldName = "actionSets"; + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs.meta new file mode 100644 index 00000000..bef63b4e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Generator_Names.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1178c003dbad4854a932b7bc84000ed5 +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs new file mode 100644 index 00000000..d4cb7583 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs @@ -0,0 +1 @@ +//removed \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs.meta new file mode 100644 index 00000000..57474460 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_References.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4d10323487cb44348b830bc017eb40b4 +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs new file mode 100644 index 00000000..b4fde2b0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs @@ -0,0 +1,89 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; +using Valve.VR; +using System.Linq; +using System.Runtime.InteropServices; +using System.ComponentModel; +using System.Collections.Generic; + +namespace Valve.VR +{ + public static class SteamVR_Input_Source + { + public static int numSources = System.Enum.GetValues(typeof(SteamVR_Input_Sources)).Length; + + private static ulong[] inputSourceHandlesBySource; + private static Dictionary inputSourceSourcesByHandle = new Dictionary(); + + private static Type enumType = typeof(SteamVR_Input_Sources); + private static Type descriptionType = typeof(DescriptionAttribute); + + private static SteamVR_Input_Sources[] allSources; + + public static ulong GetHandle(SteamVR_Input_Sources inputSource) + { + int index = (int)inputSource; + if (index < inputSourceHandlesBySource.Length) + return inputSourceHandlesBySource[index]; + + return 0; + } + public static SteamVR_Input_Sources GetSource(ulong handle) + { + if (inputSourceSourcesByHandle.ContainsKey(handle)) + return inputSourceSourcesByHandle[handle]; + + return SteamVR_Input_Sources.Any; + } + + public static SteamVR_Input_Sources[] GetAllSources() + { + if (allSources == null) + allSources = (SteamVR_Input_Sources[])System.Enum.GetValues(typeof(SteamVR_Input_Sources)); + + return allSources; + } + + private static string GetPath(string inputSourceEnumName) + { + return ((DescriptionAttribute)enumType.GetMember(inputSourceEnumName)[0].GetCustomAttributes(descriptionType, false)[0]).Description; + } + + public static void Initialize() + { + List allSourcesList = new List(); + string[] enumNames = System.Enum.GetNames(enumType); + inputSourceHandlesBySource = new ulong[enumNames.Length]; + inputSourceSourcesByHandle = new Dictionary(); + + for (int enumIndex = 0; enumIndex < enumNames.Length; enumIndex++) + { + string path = GetPath(enumNames[enumIndex]); + + ulong handle = 0; + EVRInputError err = OpenVR.Input.GetInputSourceHandle(path, ref handle); + + if (err != EVRInputError.None) + Debug.LogError("[SteamVR] GetInputSourceHandle (" + path + ") error: " + err.ToString()); + + if (enumNames[enumIndex] == SteamVR_Input_Sources.Any.ToString()) //todo: temporary hack + { + inputSourceHandlesBySource[enumIndex] = 0; + inputSourceSourcesByHandle.Add(0, (SteamVR_Input_Sources)enumIndex); + } + else + { + inputSourceHandlesBySource[enumIndex] = handle; + inputSourceSourcesByHandle.Add(handle, (SteamVR_Input_Sources)enumIndex); + } + + allSourcesList.Add((SteamVR_Input_Sources)enumIndex); + } + + allSources = allSourcesList.ToArray(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs.meta new file mode 100644 index 00000000..c678fd4c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Source.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: edb9f777bb43d4d4e800dd8a82ba523c +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs new file mode 100644 index 00000000..872457e1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs @@ -0,0 +1,60 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace Valve.VR +{ + public enum SteamVR_Input_Sources + { + [Description("/unrestricted")] //todo: check to see if this gets exported: k_ulInvalidInputHandle + Any, + + [Description("/user/hand/left")] + LeftHand, + + [Description("/user/hand/right")] + RightHand, + + [Description("/user/foot/left")] + LeftFoot, + + [Description("/user/foot/right")] + RightFoot, + + [Description("/user/shoulder/left")] + LeftShoulder, + + [Description("/user/shoulder/right")] + RightShoulder, + + [Description("/user/waist")] + Waist, + + [Description("/user/chest")] + Chest, + + [Description("/user/head")] + Head, + + [Description("/user/gamepad")] + Gamepad, + + [Description("/user/camera")] + Camera, + + [Description("/user/keyboard")] + Keyboard, + + [Description("/user/treadmill")] + Treadmill, + } +} + +namespace Valve.VR.InputSources +{ + using Sources = SteamVR_Input_Sources; +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs.meta new file mode 100644 index 00000000..44a362f0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Input_Sources.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c2cbd60e2aad2b7468204d5a69489739 +timeCreated: 1544852188 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs new file mode 100644 index 00000000..b3c75701 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs @@ -0,0 +1,145 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections; +using UnityEngine; +using Valve.VR; + +using System.Linq; + +namespace Valve.VR +{ + public class SteamVR_Skeleton_Pose : ScriptableObject + { + public SteamVR_Skeleton_Pose_Hand leftHand = new SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources.LeftHand); + public SteamVR_Skeleton_Pose_Hand rightHand = new SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources.RightHand); + + protected const int leftHandInputSource = (int)SteamVR_Input_Sources.LeftHand; + protected const int rightHandInputSource = (int)SteamVR_Input_Sources.RightHand; + + public bool applyToSkeletonRoot = true; + + public SteamVR_Skeleton_Pose_Hand GetHand(int hand) + { + if (hand == leftHandInputSource) + return leftHand; + else if (hand == rightHandInputSource) + return rightHand; + return null; + } + + public SteamVR_Skeleton_Pose_Hand GetHand(SteamVR_Input_Sources hand) + { + if (hand == SteamVR_Input_Sources.LeftHand) + return leftHand; + else if (hand == SteamVR_Input_Sources.RightHand) + return rightHand; + return null; + } + } + + [Serializable] + public class SteamVR_Skeleton_Pose_Hand + { + public SteamVR_Input_Sources inputSource; + + public SteamVR_Skeleton_FingerExtensionTypes thumbFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static; + public SteamVR_Skeleton_FingerExtensionTypes indexFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static; + public SteamVR_Skeleton_FingerExtensionTypes middleFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static; + public SteamVR_Skeleton_FingerExtensionTypes ringFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static; + public SteamVR_Skeleton_FingerExtensionTypes pinkyFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static; + + /// + /// Get extension type for a particular finger. Thumb is 0, Index is 1, etc. + /// + public SteamVR_Skeleton_FingerExtensionTypes GetFingerExtensionType(int finger) + { + if (finger == 0) + return thumbFingerMovementType; + if (finger == 1) + return indexFingerMovementType; + if (finger == 2) + return middleFingerMovementType; + if (finger == 3) + return ringFingerMovementType; + if (finger == 4) + return pinkyFingerMovementType; + + //default to static + Debug.LogWarning("Finger not in range!"); + return SteamVR_Skeleton_FingerExtensionTypes.Static; + } + + public bool ignoreRootPoseData = true; + public bool ignoreWristPoseData = true; + + public Vector3 position; + public Quaternion rotation; + + public Vector3[] bonePositions; + public Quaternion[] boneRotations; + + public SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources source) + { + inputSource = source; + } + + public SteamVR_Skeleton_FingerExtensionTypes GetMovementTypeForBone(int boneIndex) + { + int fingerIndex = SteamVR_Skeleton_JointIndexes.GetFingerForBone(boneIndex); + + switch (fingerIndex) + { + case SteamVR_Skeleton_FingerIndexes.thumb: + return thumbFingerMovementType; + + case SteamVR_Skeleton_FingerIndexes.index: + return indexFingerMovementType; + + case SteamVR_Skeleton_FingerIndexes.middle: + return middleFingerMovementType; + + case SteamVR_Skeleton_FingerIndexes.ring: + return ringFingerMovementType; + + case SteamVR_Skeleton_FingerIndexes.pinky: + return pinkyFingerMovementType; + } + + return SteamVR_Skeleton_FingerExtensionTypes.Static; + } + } + + public enum SteamVR_Skeleton_FingerExtensionTypes + { + Static, + Free, + Extend, + Contract, + } + + public class SteamVR_Skeleton_FingerExtensionTypeLists + { + private SteamVR_Skeleton_FingerExtensionTypes[] _enumList; + public SteamVR_Skeleton_FingerExtensionTypes[] enumList + { + get + { + if (_enumList == null) + _enumList = (SteamVR_Skeleton_FingerExtensionTypes[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerExtensionTypes)); + return _enumList; + } + } + + private string[] _stringList; + public string[] stringList + { + get + { + if (_stringList == null) + _stringList = enumList.Select(element => element.ToString()).ToArray(); + return _stringList; + } + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs.meta new file mode 100644 index 00000000..cdf06a49 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Pose.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e90911e410742a1498a167540c7865bf +timeCreated: 1547854805 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 45bc2e588f0a52e42a36572e1181cadf, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs new file mode 100644 index 00000000..16675551 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs @@ -0,0 +1,564 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections; +using UnityEngine; +using Valve.VR; +using System.Collections.Generic; +using System.Linq; + +namespace Valve.VR +{ + public class SteamVR_Skeleton_Poser : MonoBehaviour + { + #region Editor Storage + public bool poseEditorExpanded = true; + public bool blendEditorExpanded = true; + public string[] poseNames; + #endregion + + public GameObject overridePreviewLeftHandPrefab; + public GameObject overridePreviewRightHandPrefab; + + public SteamVR_Skeleton_Pose skeletonMainPose; + public List skeletonAdditionalPoses = new List(); + + [SerializeField] + protected bool showLeftPreview = false; + + [SerializeField] + protected bool showRightPreview = true; //show the right hand by default + + [SerializeField] + protected GameObject previewLeftInstance; + + [SerializeField] + protected GameObject previewRightInstance; + + [SerializeField] + protected int previewPoseSelection = 0; + + public int blendPoseCount { get { return blendPoses.Length; } } + + public List blendingBehaviours = new List(); + + public SteamVR_Skeleton_PoseSnapshot blendedSnapshotL; + public SteamVR_Skeleton_PoseSnapshot blendedSnapshotR; + + private SkeletonBlendablePose[] blendPoses; + + private int boneCount; + + private bool poseUpdatedThisFrame; + + public float scale; + + + protected void Awake() + { + if (previewLeftInstance != null) + DestroyImmediate(previewLeftInstance); + if (previewRightInstance != null) + DestroyImmediate(previewRightInstance); + + blendPoses = new SkeletonBlendablePose[skeletonAdditionalPoses.Count + 1]; + for (int i = 0; i < blendPoseCount; i++) + { + blendPoses[i] = new SkeletonBlendablePose(GetPoseByIndex(i)); + blendPoses[i].PoseToSnapshots(); + } + + boneCount = skeletonMainPose.leftHand.bonePositions.Length; + // NOTE: Is there a better way to get the bone count? idk + blendedSnapshotL = new SteamVR_Skeleton_PoseSnapshot(boneCount, SteamVR_Input_Sources.LeftHand); + blendedSnapshotR = new SteamVR_Skeleton_PoseSnapshot(boneCount, SteamVR_Input_Sources.RightHand); + } + + + + /// + /// Set the blending value of a blendingBehaviour. Works best on Manual type behaviours. + /// + public void SetBlendingBehaviourValue(string behaviourName, float value) + { + PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName); + if (behaviour != null) + { + behaviour.value = value; + + if (behaviour.type != PoseBlendingBehaviour.BlenderTypes.Manual) + { + Debug.LogWarning("[SteamVR] Blending Behaviour: " + behaviourName + " is not a manual behaviour. Its value will likely be overriden.", this); + } + } + } + /// + /// Get the blending value of a blendingBehaviour. + /// + public float GetBlendingBehaviourValue(string behaviourName) + { + PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName); + if (behaviour != null) + { + return behaviour.value; + } + return 0; + } + + /// + /// Enable or disable a blending behaviour. + /// + public void SetBlendingBehaviourEnabled(string behaviourName, bool value) + { + PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName); + if (behaviour != null) + { + behaviour.enabled = value; + } + } + /// + /// Check if a blending behaviour is enabled. + /// + /// + /// + public bool GetBlendingBehaviourEnabled(string behaviourName) + { + PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName); + if (behaviour != null) + { + return behaviour.enabled; + } + + return false; + } + /// + /// Get a blending behaviour by name. + /// + public PoseBlendingBehaviour GetBlendingBehaviour(string behaviourName) + { + return FindBlendingBehaviour(behaviourName); + } + + protected PoseBlendingBehaviour FindBlendingBehaviour(string behaviourName, bool throwErrors = true) + { + PoseBlendingBehaviour behaviour = blendingBehaviours.Find(b => b.name == behaviourName); + + if (behaviour == null) + { + if (throwErrors) + Debug.LogError("[SteamVR] Blending Behaviour: " + behaviourName + " not found on Skeleton Poser: " + gameObject.name, this); + + return null; + } + + return behaviour; + } + + + public SteamVR_Skeleton_Pose GetPoseByIndex(int index) + { + if (index == 0) { return skeletonMainPose; } + else { return skeletonAdditionalPoses[index - 1]; } + } + + private SteamVR_Skeleton_PoseSnapshot GetHandSnapshot(SteamVR_Input_Sources inputSource) + { + if (inputSource == SteamVR_Input_Sources.LeftHand) + return blendedSnapshotL; + else + return blendedSnapshotR; + } + + /// + /// Retrieve the final animated pose, to be applied to a hand skeleton + /// + /// The skeleton action you want to blend between + /// If this is for the left or right hand + public SteamVR_Skeleton_PoseSnapshot GetBlendedPose(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources handType) + { + UpdatePose(skeletonAction, handType); + return GetHandSnapshot(handType); + } + + /// + /// Retrieve the final animated pose, to be applied to a hand skeleton + /// + /// The skeleton behaviour you want to get the action/input source from to blend between + public SteamVR_Skeleton_PoseSnapshot GetBlendedPose(SteamVR_Behaviour_Skeleton skeletonBehaviour) + { + return GetBlendedPose(skeletonBehaviour.skeletonAction, skeletonBehaviour.inputSource); + } + + + /// + /// Updates all pose animation and blending. Can be called from different places without performance concerns, as it will only let itself run once per frame. + /// + public void UpdatePose(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources inputSource) + { + // only allow this function to run once per frame + if (poseUpdatedThisFrame) return; + + poseUpdatedThisFrame = true; + + if (skeletonAction.activeBinding) + { + // always do additive animation on main pose + blendPoses[0].UpdateAdditiveAnimation(skeletonAction, inputSource); + } + + //copy from main pose as a base + SteamVR_Skeleton_PoseSnapshot snap = GetHandSnapshot(inputSource); + snap.CopyFrom(blendPoses[0].GetHandSnapshot(inputSource)); + + ApplyBlenderBehaviours(skeletonAction, inputSource, snap); + + + if (inputSource == SteamVR_Input_Sources.RightHand) + blendedSnapshotR = snap; + if (inputSource == SteamVR_Input_Sources.LeftHand) + blendedSnapshotL = snap; + } + + protected void ApplyBlenderBehaviours(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources inputSource, SteamVR_Skeleton_PoseSnapshot snapshot) + { + + // apply blending for each behaviour + for (int behaviourIndex = 0; behaviourIndex < blendingBehaviours.Count; behaviourIndex++) + { + blendingBehaviours[behaviourIndex].Update(Time.deltaTime, inputSource); + // if disabled or very low influence, skip for perf + if (blendingBehaviours[behaviourIndex].enabled && blendingBehaviours[behaviourIndex].influence * blendingBehaviours[behaviourIndex].value > 0.01f) + { + if (blendingBehaviours[behaviourIndex].pose != 0 && skeletonAction.activeBinding) + { + // update additive animation only as needed + blendPoses[blendingBehaviours[behaviourIndex].pose].UpdateAdditiveAnimation(skeletonAction, inputSource); + } + + blendingBehaviours[behaviourIndex].ApplyBlending(snapshot, blendPoses, inputSource); + } + } + + } + + protected void LateUpdate() + { + // let the pose be updated again the next frame + poseUpdatedThisFrame = false; + } + + /// Weighted average of n vector3s + protected Vector3 BlendVectors(Vector3[] vectors, float[] weights) + { + Vector3 blendedVector = Vector3.zero; + for (int i = 0; i < vectors.Length; i++) + { + blendedVector += vectors[i] * weights[i]; + } + return blendedVector; + } + + /// Weighted average of n quaternions + protected Quaternion BlendQuaternions(Quaternion[] quaternions, float[] weights) + { + Quaternion outquat = Quaternion.identity; + for (int i = 0; i < quaternions.Length; i++) + { + outquat *= Quaternion.Slerp(Quaternion.identity, quaternions[i], weights[i]); + } + return outquat; + } + + /// + /// A SkeletonBlendablePose holds a reference to a Skeleton_Pose scriptableObject, and also contains some helper functions. + /// Also handles pose-specific animation like additive finger motion. + /// + public class SkeletonBlendablePose + { + public SteamVR_Skeleton_Pose pose; + public SteamVR_Skeleton_PoseSnapshot snapshotR; + public SteamVR_Skeleton_PoseSnapshot snapshotL; + + /// + /// Get the snapshot of this pose with effects such as additive finger animation applied. + /// + public SteamVR_Skeleton_PoseSnapshot GetHandSnapshot(SteamVR_Input_Sources inputSource) + { + if (inputSource == SteamVR_Input_Sources.LeftHand) + { + return snapshotL; + } + else + { + return snapshotR; + } + } + + public void UpdateAdditiveAnimation(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources inputSource) + { + if (skeletonAction.GetSkeletalTrackingLevel() == EVRSkeletalTrackingLevel.VRSkeletalTracking_Estimated) + { + //do not apply additive animation on low fidelity controllers, eg. Vive Wands and Touch + return; + } + + SteamVR_Skeleton_PoseSnapshot snapshot = GetHandSnapshot(inputSource); + SteamVR_Skeleton_Pose_Hand poseHand = pose.GetHand(inputSource); + + for (int boneIndex = 0; boneIndex < snapshotL.bonePositions.Length; boneIndex++) + { + int fingerIndex = SteamVR_Skeleton_JointIndexes.GetFingerForBone(boneIndex); + SteamVR_Skeleton_FingerExtensionTypes extensionType = poseHand.GetMovementTypeForBone(boneIndex); + + if (extensionType == SteamVR_Skeleton_FingerExtensionTypes.Free) + { + snapshot.bonePositions[boneIndex] = skeletonAction.bonePositions[boneIndex]; + snapshot.boneRotations[boneIndex] = skeletonAction.boneRotations[boneIndex]; + } + if (extensionType == SteamVR_Skeleton_FingerExtensionTypes.Extend) + { + // lerp to open pose by fingercurl + snapshot.bonePositions[boneIndex] = Vector3.Lerp(poseHand.bonePositions[boneIndex], skeletonAction.bonePositions[boneIndex], 1 - skeletonAction.fingerCurls[fingerIndex]); + snapshot.boneRotations[boneIndex] = Quaternion.Lerp(poseHand.boneRotations[boneIndex], skeletonAction.boneRotations[boneIndex], 1 - skeletonAction.fingerCurls[fingerIndex]); + } + if (extensionType == SteamVR_Skeleton_FingerExtensionTypes.Contract) + { + // lerp to closed pose by fingercurl + snapshot.bonePositions[boneIndex] = Vector3.Lerp(poseHand.bonePositions[boneIndex], skeletonAction.bonePositions[boneIndex], skeletonAction.fingerCurls[fingerIndex]); + snapshot.boneRotations[boneIndex] = Quaternion.Lerp(poseHand.boneRotations[boneIndex], skeletonAction.boneRotations[boneIndex], skeletonAction.fingerCurls[fingerIndex]); + } + } + } + + /// + /// Init based on an existing Skeleton_Pose + /// + public SkeletonBlendablePose(SteamVR_Skeleton_Pose p) + { + pose = p; + snapshotR = new SteamVR_Skeleton_PoseSnapshot(p.rightHand.bonePositions.Length, SteamVR_Input_Sources.RightHand); + snapshotL = new SteamVR_Skeleton_PoseSnapshot(p.leftHand.bonePositions.Length, SteamVR_Input_Sources.LeftHand); + } + + /// + /// Copy the base pose into the snapshots. + /// + public void PoseToSnapshots() + { + snapshotR.position = pose.rightHand.position; + snapshotR.rotation = pose.rightHand.rotation; + pose.rightHand.bonePositions.CopyTo(snapshotR.bonePositions, 0); + pose.rightHand.boneRotations.CopyTo(snapshotR.boneRotations, 0); + + snapshotL.position = pose.leftHand.position; + snapshotL.rotation = pose.leftHand.rotation; + pose.leftHand.bonePositions.CopyTo(snapshotL.bonePositions, 0); + pose.leftHand.boneRotations.CopyTo(snapshotL.boneRotations, 0); + } + + public SkeletonBlendablePose() { } + } + + /// + /// A filter applied to the base pose. Blends to a secondary pose by a certain weight. Can be masked per-finger + /// + [System.Serializable] + public class PoseBlendingBehaviour + { + public string name; + public bool enabled = true; + public float influence = 1; + public int pose = 1; + public float value = 0; + public SteamVR_Action_Single action_single; + public SteamVR_Action_Boolean action_bool; + public float smoothingSpeed = 0; + public BlenderTypes type; + public bool useMask; + public SteamVR_Skeleton_HandMask mask = new SteamVR_Skeleton_HandMask(); + + public bool previewEnabled; + + /// + /// Performs smoothing based on deltaTime parameter. + /// + public void Update(float deltaTime, SteamVR_Input_Sources inputSource) + { + if (type == BlenderTypes.AnalogAction) + { + if (smoothingSpeed == 0) + value = action_single.GetAxis(inputSource); + else + value = Mathf.Lerp(value, action_single.GetAxis(inputSource), deltaTime * smoothingSpeed); + } + if (type == BlenderTypes.BooleanAction) + { + if (smoothingSpeed == 0) + value = action_bool.GetState(inputSource) ? 1 : 0; + else + value = Mathf.Lerp(value, action_bool.GetState(inputSource) ? 1 : 0, deltaTime * smoothingSpeed); + } + } + + /// + /// Apply blending to this behaviour's pose to an existing snapshot. + /// + /// Snapshot to modify + /// List of blend poses to get the target pose + /// Which hand to receive input from + public void ApplyBlending(SteamVR_Skeleton_PoseSnapshot snapshot, SkeletonBlendablePose[] blendPoses, SteamVR_Input_Sources inputSource) + { + SteamVR_Skeleton_PoseSnapshot targetSnapshot = blendPoses[pose].GetHandSnapshot(inputSource); + if (mask.GetFinger(0) || useMask == false) + { + snapshot.position = Vector3.Lerp(snapshot.position, targetSnapshot.position, influence * value); + snapshot.rotation = Quaternion.Slerp(snapshot.rotation, targetSnapshot.rotation, influence * value); + } + + for (int boneIndex = 0; boneIndex < snapshot.bonePositions.Length; boneIndex++) + { + // verify the current finger is enabled in the mask, or if no mask is used. + if (mask.GetFinger(SteamVR_Skeleton_JointIndexes.GetFingerForBone(boneIndex) + 1) || useMask == false) + { + snapshot.bonePositions[boneIndex] = Vector3.Lerp(snapshot.bonePositions[boneIndex], targetSnapshot.bonePositions[boneIndex], influence * value); + snapshot.boneRotations[boneIndex] = Quaternion.Slerp(snapshot.boneRotations[boneIndex], targetSnapshot.boneRotations[boneIndex], influence * value); + } + } + } + + public PoseBlendingBehaviour() + { + enabled = true; + influence = 1; + } + + public enum BlenderTypes + { + Manual, AnalogAction, BooleanAction + } + } + + + //this is broken + public Vector3 GetTargetHandPosition(SteamVR_Behaviour_Skeleton hand, Transform origin) + { + Vector3 oldOrigin = origin.position; + Quaternion oldHand = hand.transform.rotation; + hand.transform.rotation = GetBlendedPose(hand).rotation; + origin.position = hand.transform.TransformPoint(GetBlendedPose(hand).position); + Vector3 offset = origin.InverseTransformPoint(hand.transform.position); + origin.position = oldOrigin; + hand.transform.rotation = oldHand; + return origin.TransformPoint(offset); + } + + public Quaternion GetTargetHandRotation(SteamVR_Behaviour_Skeleton hand, Transform origin) + { + Quaternion oldOrigin = origin.rotation; + origin.rotation = hand.transform.rotation * GetBlendedPose(hand).rotation; + Quaternion offsetRot = Quaternion.Inverse(origin.rotation) * hand.transform.rotation; + origin.rotation = oldOrigin; + return origin.rotation * offsetRot; + } + } + + /// + /// PoseSnapshots hold a skeleton pose for one hand, as well as storing which hand they contain. + /// They have several functions for combining BlendablePoses. + /// + public class SteamVR_Skeleton_PoseSnapshot + { + public SteamVR_Input_Sources inputSource; + + public Vector3 position; + public Quaternion rotation; + + public Vector3[] bonePositions; + public Quaternion[] boneRotations; + + public SteamVR_Skeleton_PoseSnapshot(int boneCount, SteamVR_Input_Sources source) + { + inputSource = source; + bonePositions = new Vector3[boneCount]; + boneRotations = new Quaternion[boneCount]; + position = Vector3.zero; + rotation = Quaternion.identity; + } + + /// + /// Perform a deep copy from one poseSnapshot to another. + /// + public void CopyFrom(SteamVR_Skeleton_PoseSnapshot source) + { + inputSource = source.inputSource; + position = source.position; + rotation = source.rotation; + for (int i = 0; i < bonePositions.Length; i++) + { + bonePositions[i] = source.bonePositions[i]; + boneRotations[i] = source.boneRotations[i]; + } + } + + + } + + + /// + /// Simple mask for fingers + /// + [System.Serializable] + public class SteamVR_Skeleton_HandMask + { + public bool palm; + public bool thumb; + public bool index; + public bool middle; + public bool ring; + public bool pinky; + public bool[] values = new bool[6]; + + public void SetFinger(int i, bool value) + { + values[i] = value; + Apply(); + } + + public bool GetFinger(int i) + { + return values[i]; + } + + public SteamVR_Skeleton_HandMask() + { + values = new bool[6]; + Reset(); + } + + /// + /// All elements on + /// + public void Reset() + { + values = new bool[6]; + for (int i = 0; i < 6; i++) + { + values[i] = true; + } + Apply(); + } + + protected void Apply() + { + palm = values[0]; + thumb = values[1]; + index = values[2]; + middle = values[3]; + ring = values[4]; + pinky = values[5]; + } + + public static readonly SteamVR_Skeleton_HandMask fullMask = new SteamVR_Skeleton_HandMask(); + }; + +} diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs.meta new file mode 100644 index 00000000..c519527d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_Skeleton_Poser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e7418c7dd8f977d4e969202d3fa7e926 +timeCreated: 1542680608 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs new file mode 100644 index 00000000..ffa9fd46 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs @@ -0,0 +1,14 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + + +namespace Valve.VR +{ + public enum SteamVR_UpdateModes + { + Nothing = (1 << 0), + OnUpdate = (1 << 1), + OnFixedUpdate = (1 << 2), + OnPreCull = (1 << 3), + OnLateUpdate = (1 << 4), + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs.meta b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs.meta new file mode 100644 index 00000000..89e5e0bb --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/Input/SteamVR_UpdateModes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5811a8be2382cd440970c707dccb6fb0 +timeCreated: 1544852190 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem.meta new file mode 100644 index 00000000..f510efdd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c8941a9f98c35d84cb19a5e044467de9 +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core.meta new file mode 100644 index 00000000..7cb2055d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1ab2780fe1da2544b86a1020e5f638e2 +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons.meta new file mode 100644 index 00000000..5c73e6b3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1fcf8377413b60c44afff7b2e4efd8f7 +folderAsset: yes +timeCreated: 1482867667 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png new file mode 100644 index 00000000..ccdc4d06 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:761f314867d1d49c8f131ca3b1c2f6da61fea23664652b39b6dfd7f8c85e3f34 +size 14839 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta new file mode 100644 index 00000000..b83d41e6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: b93fe5c516cf6ed4b9153ec790f856e2 +timeCreated: 1484264198 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png new file mode 100644 index 00000000..48912394 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf9e175f5700ffb6bb73cc00ddd1755742568741b9b793dc9e05453b5da6d4b2 +size 11011 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta new file mode 100644 index 00000000..cf03fc94 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 032fb1710098a1d47ad34d72e90f714a +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png new file mode 100644 index 00000000..1b4cc023 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea2c290be7aa9df4dd4e3e13f1ec88191e43e0b24faa0a01708ee9ee9c4e8035 +size 10034 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta new file mode 100644 index 00000000..fd76cfa2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 27f3faef5a63db84c9cbac06e94ab7b3 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png new file mode 100644 index 00000000..07c3a15f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76a38e8335f84e32fd90a0ecfc5b4e8c9819cfecb455ff92b23b23967160f88 +size 11809 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta new file mode 100644 index 00000000..551713b7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 6789d499b24f8964c8bb06e21008e546 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png new file mode 100644 index 00000000..63b1a55a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d96acf42841f71b8e63be677becd16558d8543ef8724217e2af1b10915324cf +size 10163 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta new file mode 100644 index 00000000..a193a69e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 1acda2a2584a8fb4683ea56799b27fa0 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png new file mode 100644 index 00000000..0befe6e4 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feb7ce26eec9d58b5e5e790b0795def7284a92479aee962260239cccc6f9b0cb +size 11971 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta new file mode 100644 index 00000000..9725e1d8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 90173f9e9e795f74ca97ccc52fe410cd +timeCreated: 1435940723 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png new file mode 100644 index 00000000..3e3f7ecd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb35c9d96deddc945b1f977a0fbf40eb98111c1e0cb6ba1f2d75c2beed27ef0f +size 13315 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png.meta new file mode 100644 index 00000000..1184b073 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 77b322b27d7d39f4d91e479d19065d50 +timeCreated: 1435940723 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials.meta new file mode 100644 index 00000000..d03e9b74 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 05a69997deb9f5944a894239434f00a9 +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat new file mode 100644 index 00000000..c4efae18 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FallbackHandIndicator + m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 2000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 0, b: 0, a: 1} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat.meta new file mode 100644 index 00000000..82644b53 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e995e61de69d8647ae2b2d65eceab3f +timeCreated: 1436394722 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat new file mode 100644 index 00000000..7b406845 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat @@ -0,0 +1,182 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: HoverHighlight + m_Shader: {fileID: 4800000, guid: 0c1cf10ea69e60e4f9eb8955749f88ec, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: g_flOutlineWidth + second: 0.005 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Outline + second: 0.005 + data: + first: + name: _Opacity + second: 0 + data: + first: + name: _node_6969 + second: 0 + data: + first: + name: _OutlineWidth + second: 0.00238 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0.486632, g: 0.78411454, b: 0.8823653, a: 1} + data: + first: + name: g_vOutlineColor + second: {r: 0.9485294, g: 0.9223629, b: 0, a: 1} + data: + first: + name: _OutlineColor + second: {r: 1, g: 0.9833671, b: 0.39705884, a: 1} + data: + first: + name: _node_2507 + second: {r: 0.6421389, g: 0.7807802, b: 0.78676474, a: 0} + data: + first: + name: _OutlightColor + second: {r: 0.9446255, g: 1, b: 0.42647058, a: 0.347} + data: + first: + name: _node_8174 + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + data: + first: + name: _node_8282 + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat.meta new file mode 100644 index 00000000..bc49d16a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b939e5e799d98a469f594828ebab52e +timeCreated: 1439237525 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat new file mode 100644 index 00000000..89e506c8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SeeThru + m_Shader: {fileID: 4800000, guid: 6337aa7e7823eee43af8ffe676935e74, type: 3} + m_ShaderKeywords: S_SPECULAR_NONE S_UNLIT _ALPHABLEND_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: + OriginalShader: Unlit/Texture + RenderType: Transparent + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: g_tOverrideLightmap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: PixelSnap + second: 0 + - first: + name: _BumpScale + second: 1 + - first: + name: _ColorMask + second: 15 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 10 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _InvFade + second: 0.5 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 2 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _OcclusionStrengthDirectDiffuse + second: 1 + - first: + name: _OcclusionStrengthDirectSpecular + second: 1 + - first: + name: _OcclusionStrengthIndirectDiffuse + second: 1 + - first: + name: _OcclusionStrengthIndirectSpecular + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SpecularMode + second: 1 + - first: + name: _SrcBlend + second: 5 + - first: + name: _Stencil + second: 0 + - first: + name: _StencilComp + second: 8 + - first: + name: _StencilOp + second: 0 + - first: + name: _StencilReadMask + second: 255 + - first: + name: _StencilWriteMask + second: 255 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + - first: + name: g_bReceiveShadows + second: 1 + - first: + name: g_bUnlit + second: 1 + - first: + name: g_bWorldAlignedTexture + second: 0 + - first: + name: g_flCubeMapScalar + second: 1 + - first: + name: g_flReflectanceBias + second: 0 + - first: + name: g_flReflectanceMax + second: 1 + - first: + name: g_flReflectanceMin + second: 0 + - first: + name: g_flReflectanceScale + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.24999985, g: 0.24999985, b: 0.24999985, a: 0.1254902} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _SpecColor + second: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - first: + name: _TintColor + second: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + - first: + name: g_vWorldAlignedNormalTangentU + second: {r: -1, g: 0, b: 0, a: 0} + - first: + name: g_vWorldAlignedNormalTangentV + second: {r: 0, g: 0, b: 1, a: 0} + - first: + name: g_vWorldAlignedTextureNormal + second: {r: 0, g: 1, b: 0, a: 0} + - first: + name: g_vWorldAlignedTexturePosition + second: {r: 0, g: 0, b: 0, a: 0} + - first: + name: g_vWorldAlignedTextureSize + second: {r: 1, g: 1, b: 1, a: 0} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat.meta new file mode 100644 index 00000000..5630e461 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bbb445147c574240a8b87a1193788b5 +timeCreated: 1456708947 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat new file mode 100644 index 00000000..c3207863 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat @@ -0,0 +1,197 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SteamVRControllerModel + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: S_RECEIVE_SHADOWS S_SPECULAR_METALLIC _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: + OriginalShader: Standard + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: g_tOverrideLightmap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.405 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _OcclusionStrengthDirectDiffuse + second: 1 + - first: + name: _OcclusionStrengthDirectSpecular + second: 1 + - first: + name: _OcclusionStrengthIndirectDiffuse + second: 1 + - first: + name: _OcclusionStrengthIndirectSpecular + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SpecularMode + second: 2 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + - first: + name: g_bReceiveShadows + second: 1 + - first: + name: g_bUnlit + second: 0 + - first: + name: g_bWorldAlignedTexture + second: 0 + - first: + name: g_flCubeMapScalar + second: 1 + - first: + name: g_flReflectanceBias + second: 0 + - first: + name: g_flReflectanceMax + second: 1 + - first: + name: g_flReflectanceMin + second: 0 + - first: + name: g_flReflectanceScale + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _SpecColor + second: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - first: + name: g_vWorldAlignedNormalTangentU + second: {r: -1, g: 0, b: 0, a: 0} + - first: + name: g_vWorldAlignedNormalTangentV + second: {r: 0, g: 0, b: 1, a: 0} + - first: + name: g_vWorldAlignedTextureNormal + second: {r: 0, g: 1, b: 0, a: 0} + - first: + name: g_vWorldAlignedTexturePosition + second: {r: 0, g: 0, b: 0, a: 0} + - first: + name: g_vWorldAlignedTextureSize + second: {r: 1, g: 1, b: 1, a: 0} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat.meta new file mode 100644 index 00000000..4085b7e0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c433e134e4719444b65bf064a77e22e +timeCreated: 1455877211 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs.meta new file mode 100644 index 00000000..a505e518 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6d60d25020af6fb4f8d436244db7cc4b +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab new file mode 100644 index 00000000..e73f98ec --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab @@ -0,0 +1,811 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000013588331694} + m_IsPrefabParent: 1 +--- !u!1 &1000010324375676 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012765033070} + - 135: {fileID: 135000014125725866} + m_Layer: 8 + m_Name: finger_ring_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010943680784 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012962541566} + - 135: {fileID: 135000013343303422} + m_Layer: 8 + m_Name: finger_index_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011220539174 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010748827216} + - 135: {fileID: 135000010226986612} + m_Layer: 8 + m_Name: finger_index_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011237366522 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012995160158} + - 135: {fileID: 135000012534657806} + m_Layer: 8 + m_Name: finger_middle_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011304683130 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011957011620} + - 33: {fileID: 33000013448054712} + - 135: {fileID: 135000010524601854} + m_Layer: 8 + m_Name: Sphere (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011613764148 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011912412668} + - 33: {fileID: 33000010571670074} + - 135: {fileID: 135000012858158250} + m_Layer: 8 + m_Name: Sphere (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011641533962 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000014196080978} + - 135: {fileID: 135000013103434970} + m_Layer: 8 + m_Name: finger_middle_0_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011917277578 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012050390454} + - 135: {fileID: 135000011157456608} + m_Layer: 8 + m_Name: finger_index_0_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012155149048 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010317872206} + - 135: {fileID: 135000013583319202} + m_Layer: 8 + m_Name: finger_ring_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012230303462 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013385037612} + - 33: {fileID: 33000012082552246} + - 135: {fileID: 135000013296820600} + m_Layer: 8 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012988446628 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011150399860} + - 135: {fileID: 135000011597655318} + m_Layer: 8 + m_Name: thumb_distal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013123655998 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000014135373018} + m_Layer: 8 + m_Name: spheres + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013250311742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013920263390} + - 135: {fileID: 135000010489002386} + m_Layer: 8 + m_Name: finger_pinky_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013415698584 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012788572454} + m_Layer: 8 + m_Name: fingers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013484163102 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010973331830} + - 135: {fileID: 135000010580124084} + m_Layer: 8 + m_Name: finger_middle_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013588331694 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011495277878} + - 114: {fileID: 114000010572907066} + - 54: {fileID: 54000013135273658} + m_Layer: 8 + m_Name: HandColliderLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013918884664 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010454108534} + - 33: {fileID: 33000012180426442} + - 135: {fileID: 135000010938669188} + m_Layer: 8 + m_Name: Sphere (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000014019763194 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000014174024032} + - 135: {fileID: 135000010608582948} + m_Layer: 8 + m_Name: finger_pinky_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010317872206 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012155149048} + m_LocalRotation: {x: -0.3188958, y: -0.55838585, z: -0.6785767, w: 0.35502732} + m_LocalPosition: {x: -0.0023564696, y: -0.019656926, z: 0.11861026} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010454108534 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013918884664} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0043, y: -0.0203, z: 0.0708} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014135373018} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010748827216 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011220539174} + m_LocalRotation: {x: -0.20955545, y: -0.7084194, z: -0.5972281, w: 0.31232548} + m_LocalPosition: {x: -0.018232882, y: 0.037278295, z: 0.14895564} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010973331830 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013484163102} + m_LocalRotation: {x: -0.31192344, y: -0.6383117, z: -0.6030951, w: 0.3626822} + m_LocalPosition: {x: 0.0054804683, y: 0.009177029, z: 0.12677181} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011150399860 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012988446628} + m_LocalRotation: {x: 0.048614353, y: -0.81958884, z: -0.045037244, w: 0.5691067} + m_LocalPosition: {x: -0.03928083, y: 0.060081184, z: 0.08449179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011495277878 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013588331694} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.409, y: 0.513, z: 0.25419474} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000014135373018} + - {fileID: 4000012788572454} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011912412668 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011613764148} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0013, y: 0.0236, z: 0.0762} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014135373018} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011957011620 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011304683130} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0024, y: 0.0019, z: 0.0446} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014135373018} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012050390454 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011917277578} + m_LocalRotation: {x: -0.38396484, y: -0.6282792, z: -0.49698386, w: 0.45917684} + m_LocalPosition: {x: 0.011199772, y: 0.037356794, z: 0.085021585} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012765033070 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010324375676} + m_LocalRotation: {x: -0.2374145, y: -0.5950274, z: -0.7216289, w: 0.2623519} + m_LocalPosition: {x: -0.017869234, y: -0.023237675, z: 0.14223531} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012788572454 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013415698584} + 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: 4000011150399860} + - {fileID: 4000010748827216} + - {fileID: 4000012962541566} + - {fileID: 4000012050390454} + - {fileID: 4000012995160158} + - {fileID: 4000010973331830} + - {fileID: 4000014196080978} + - {fileID: 4000012765033070} + - {fileID: 4000010317872206} + - {fileID: 4000013920263390} + - {fileID: 4000014174024032} + m_Father: {fileID: 4000011495277878} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012962541566 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010943680784} + m_LocalRotation: {x: -0.26381207, y: -0.6906685, z: -0.57137775, w: 0.35624114} + m_LocalPosition: {x: -0.0010700822, y: 0.03848529, z: 0.12651753} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012995160158 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011237366522} + m_LocalRotation: {x: -0.2211407, y: -0.6774029, z: -0.6470612, w: 0.27117145} + m_LocalPosition: {x: -0.012560666, y: 0.007871151, z: 0.1546902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013385037612 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012230303462} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.008, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014135373018} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013920263390 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013250311742} + m_LocalRotation: {x: -0.34899983, y: -0.5114209, z: -0.73903054, w: 0.2654839} + m_LocalPosition: {x: -0.01600802, y: -0.045651913, z: 0.1192801} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014135373018 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013123655998} + 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: 4000013385037612} + - {fileID: 4000010454108534} + - {fileID: 4000011912412668} + - {fileID: 4000011957011620} + m_Father: {fileID: 4000011495277878} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014174024032 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014019763194} + m_LocalRotation: {x: -0.39290822, y: -0.4674865, z: -0.70993227, w: 0.3508216} + m_LocalPosition: {x: -0.0080058575, y: -0.043300897, z: 0.10335302} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014196080978 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011641533962} + m_LocalRotation: {x: -0.41075897, y: -0.5825371, z: -0.5373983, w: 0.45070025} + m_LocalPosition: {x: 0.016528964, y: 0.009429038, z: 0.08510396} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012788572454} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000010571670074 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011613764148} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000012082552246 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012230303462} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000012180426442 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013918884664} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000013448054712 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011304683130} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &54000013135273658 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013588331694} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &114000010572907066 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013588331694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2820b584f2917744bafbfd2f8f387225, type: 3} + m_Name: + m_EditorClassIdentifier: + hand: {fileID: 0} + collisionMask: + serializedVersion: 2 + m_Bits: 4294967295 + fingerColliders: + thumbColliders: + - {fileID: 4000011150399860} + indexColliders: + - {fileID: 4000010748827216} + - {fileID: 4000012962541566} + - {fileID: 4000012050390454} + middleColliders: + - {fileID: 4000012995160158} + - {fileID: 4000010973331830} + - {fileID: 4000014196080978} + ringColliders: + - {fileID: 4000012765033070} + - {fileID: 4000010317872206} + pinkyColliders: + - {fileID: 4000013920263390} + - {fileID: 4000014174024032} + collidersInRadius: 0 +--- !u!135 &135000010226986612 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011220539174} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010489002386 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013250311742} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.01 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010524601854 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011304683130} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.035 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010580124084 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013484163102} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010608582948 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014019763194} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.01 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010938669188 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013918884664} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.025 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000011157456608 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011917277578} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.02 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000011597655318 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012988446628} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012534657806 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011237366522} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012858158250 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011613764148} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.025 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000013103434970 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011641533962} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.02 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000013296820600 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012230303462} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.04 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000013343303422 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010943680784} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000013583319202 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012155149048} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000014125725866 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010324375676} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab.meta new file mode 100644 index 00000000..fca479d2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderLeft.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73f816dd3537a4c44988f340a5da70b9 +timeCreated: 1567796930 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab new file mode 100644 index 00000000..d3326343 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab @@ -0,0 +1,811 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000013185594350} + m_IsPrefabParent: 1 +--- !u!1 &1000010046261244 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011596294980} + - 135: {fileID: 135000012669751932} + m_Layer: 8 + m_Name: finger_pinky_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010420712118 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011705022212} + - 135: {fileID: 135000010522680132} + m_Layer: 8 + m_Name: finger_middle_0_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010837900952 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011395390148} + - 135: {fileID: 135000013433154566} + m_Layer: 8 + m_Name: finger_index_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011206655068 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012017003156} + - 135: {fileID: 135000011940042238} + m_Layer: 8 + m_Name: finger_ring_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011219925658 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011043040146} + - 135: {fileID: 135000012013325142} + m_Layer: 8 + m_Name: finger_middle_1_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011440127722 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013451019918} + - 135: {fileID: 135000010681374130} + m_Layer: 8 + m_Name: finger_index_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011721073886 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013405616328} + m_Layer: 8 + m_Name: spheres + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011822383670 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010091419658} + - 33: {fileID: 33000013054687840} + - 135: {fileID: 135000011041469328} + m_Layer: 8 + m_Name: Sphere (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011975710508 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011191249750} + - 33: {fileID: 33000010987832076} + - 135: {fileID: 135000014001595118} + m_Layer: 8 + m_Name: Sphere (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012435317680 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000014054176190} + - 135: {fileID: 135000014207960770} + m_Layer: 8 + m_Name: finger_ring_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013092618156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013061167466} + m_Layer: 8 + m_Name: fingers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013185594350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010266578624} + - 114: {fileID: 114000013167804218} + - 54: {fileID: 54000012734507470} + m_Layer: 8 + m_Name: HandColliderRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013323899228 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013412041440} + - 135: {fileID: 135000012638609432} + m_Layer: 8 + m_Name: finger_index_0_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013360790954 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010492064308} + - 33: {fileID: 33000012723706334} + - 135: {fileID: 135000010572779464} + m_Layer: 8 + m_Name: Sphere (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013367065926 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011285245488} + - 135: {fileID: 135000014056040094} + m_Layer: 8 + m_Name: thumb_distal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013436413486 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010872712740} + - 33: {fileID: 33000010664015700} + - 135: {fileID: 135000011391776234} + m_Layer: 8 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013478506826 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010144325770} + - 135: {fileID: 135000012638216756} + m_Layer: 8 + m_Name: finger_middle_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013822339020 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013046992402} + - 135: {fileID: 135000012264633464} + m_Layer: 8 + m_Name: finger_pinky_2_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010091419658 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011822383670} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.0043, y: -0.0203, z: 0.0708} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013405616328} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010144325770 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013478506826} + m_LocalRotation: {x: -0.2211407, y: -0.6774029, z: -0.6470612, w: 0.27117145} + m_LocalPosition: {x: -0.012560666, y: 0.007871151, z: 0.1546902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010266578624 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013185594350} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.6855494, y: 0.513, z: 0.25419474} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000013405616328} + - {fileID: 4000013061167466} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010492064308 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013360790954} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.0024, y: 0.0019, z: 0.0446} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013405616328} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010872712740 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013436413486} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.008, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013405616328} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011043040146 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011219925658} + m_LocalRotation: {x: -0.31192344, y: -0.6383117, z: -0.6030951, w: 0.3626822} + m_LocalPosition: {x: 0.0054804683, y: 0.009177029, z: 0.12677181} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011191249750 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011975710508} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.0013, y: 0.0236, z: 0.0762} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013405616328} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011285245488 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013367065926} + m_LocalRotation: {x: 0.048614353, y: -0.81958884, z: -0.045037244, w: 0.5691067} + m_LocalPosition: {x: -0.03928083, y: 0.060081184, z: 0.08449179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011395390148 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010837900952} + m_LocalRotation: {x: -0.26381207, y: -0.6906685, z: -0.57137775, w: 0.35624114} + m_LocalPosition: {x: -0.0010700822, y: 0.03848529, z: 0.12651753} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011596294980 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010046261244} + m_LocalRotation: {x: -0.39290822, y: -0.4674865, z: -0.70993227, w: 0.3508216} + m_LocalPosition: {x: -0.0080058575, y: -0.043300897, z: 0.10335302} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011705022212 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010420712118} + m_LocalRotation: {x: -0.41075897, y: -0.5825371, z: -0.5373983, w: 0.45070025} + m_LocalPosition: {x: 0.016528964, y: 0.009429038, z: 0.08510396} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012017003156 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011206655068} + m_LocalRotation: {x: -0.3188958, y: -0.55838585, z: -0.6785767, w: 0.35502732} + m_LocalPosition: {x: -0.0023564696, y: -0.019656926, z: 0.11861026} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013046992402 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013822339020} + m_LocalRotation: {x: -0.34899983, y: -0.5114209, z: -0.73903054, w: 0.2654839} + m_LocalPosition: {x: -0.01600802, y: -0.045651913, z: 0.1192801} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013061167466 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013092618156} + 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: 4000011285245488} + - {fileID: 4000013451019918} + - {fileID: 4000011395390148} + - {fileID: 4000013412041440} + - {fileID: 4000010144325770} + - {fileID: 4000011043040146} + - {fileID: 4000011705022212} + - {fileID: 4000014054176190} + - {fileID: 4000012017003156} + - {fileID: 4000013046992402} + - {fileID: 4000011596294980} + m_Father: {fileID: 4000010266578624} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013405616328 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011721073886} + 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: 4000010872712740} + - {fileID: 4000010091419658} + - {fileID: 4000011191249750} + - {fileID: 4000010492064308} + m_Father: {fileID: 4000010266578624} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013412041440 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013323899228} + m_LocalRotation: {x: -0.38396484, y: -0.6282792, z: -0.49698386, w: 0.45917684} + m_LocalPosition: {x: 0.011199772, y: 0.037356794, z: 0.085021585} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000013451019918 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011440127722} + m_LocalRotation: {x: -0.20955545, y: -0.7084194, z: -0.5972281, w: 0.31232548} + m_LocalPosition: {x: -0.018232882, y: 0.037278295, z: 0.14895564} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000014054176190 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012435317680} + m_LocalRotation: {x: -0.2374145, y: -0.5950274, z: -0.7216289, w: 0.2623519} + m_LocalPosition: {x: -0.017869234, y: -0.023237675, z: 0.14223531} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013061167466} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000010664015700 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013436413486} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000010987832076 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011975710508} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000012723706334 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013360790954} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33000013054687840 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011822383670} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &54000012734507470 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013185594350} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &114000013167804218 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013185594350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2820b584f2917744bafbfd2f8f387225, type: 3} + m_Name: + m_EditorClassIdentifier: + hand: {fileID: 0} + collisionMask: + serializedVersion: 2 + m_Bits: 4294967295 + fingerColliders: + thumbColliders: + - {fileID: 4000011285245488} + indexColliders: + - {fileID: 4000013451019918} + - {fileID: 4000011395390148} + - {fileID: 4000013412041440} + middleColliders: + - {fileID: 4000010144325770} + - {fileID: 4000011043040146} + - {fileID: 4000011705022212} + ringColliders: + - {fileID: 4000014054176190} + - {fileID: 4000012017003156} + pinkyColliders: + - {fileID: 4000013046992402} + - {fileID: 4000011596294980} + collidersInRadius: 0 +--- !u!135 &135000010522680132 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010420712118} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.02 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010572779464 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013360790954} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.035 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000010681374130 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011440127722} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000011041469328 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011822383670} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.025 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000011391776234 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013436413486} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.04 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000011940042238 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011206655068} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012013325142 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011219925658} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012264633464 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013822339020} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.01 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012638216756 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013478506826} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012638609432 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013323899228} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.02 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000012669751932 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010046261244} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.01 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000013433154566 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010837900952} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000014001595118 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011975710508} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.025 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000014056040094 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013367065926} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &135000014207960770 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012435317680} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.015 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab.meta new file mode 100644 index 00000000..92a15ee4 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/HandColliderRight.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f378ddf4e9373548a3708d26c1d75a4 +timeCreated: 1567796810 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab new file mode 100644 index 00000000..3903be1e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000011547835092} + m_IsPrefabParent: 1 +--- !u!1 &1000011547835092 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012469850966} + - 114: {fileID: 114000013071118052} + m_Layer: 0 + m_Name: LeftRenderModel Alien + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012469850966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &114000013071118052 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000013275439980, guid: 78cacad1b5fb93349a980d2189b52b89, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab.meta new file mode 100644 index 00000000..4e9ddecf --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Alien.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8d1e5711b2c77d48ac96e769aaff27a +timeCreated: 1531273118 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab new file mode 100644 index 00000000..2871fda7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000011547835092} + m_IsPrefabParent: 1 +--- !u!1 &1000011547835092 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012469850966} + - 114: {fileID: 114000013071118052} + m_Layer: 0 + m_Name: LeftRenderModel Slim + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012469850966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000013071118052 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000013348574242, guid: 638779290bce1af49b356f33dcc6fccf, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab.meta new file mode 100644 index 00000000..6f57e04a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel Slim.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d5082f7d9f947374197e0a97786f4e40 +timeCreated: 1531273118 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab new file mode 100644 index 00000000..5a37aa3a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000011547835092} + m_IsPrefabParent: 1 +--- !u!1 &1000011547835092 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012469850966} + - 114: {fileID: 114000013071118052} + m_Layer: 0 + m_Name: LeftRenderModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012469850966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000013071118052 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000013597184258, guid: 057574477c20401448aba7c848873712, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab.meta new file mode 100644 index 00000000..980d9d2e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModel.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ade79fed86bbd141926d1cd94c98457 +timeCreated: 1531273118 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab new file mode 100644 index 00000000..d33528ab --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000011547835092} + m_IsPrefabParent: 1 +--- !u!1 &1000011547835092 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012469850966} + - 114: {fileID: 114000013071118052} + m_Layer: 0 + m_Name: LeftRenderModelFloppy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012469850966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &114000013071118052 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011547835092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000013879405016, guid: 85d52d9937d11064295294895b28d068, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab.meta new file mode 100644 index 00000000..8fea52a2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/LeftRenderModelFloppy.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 534d2fcf558316441a41841275676807 +timeCreated: 1531273118 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab new file mode 100644 index 00000000..5903733b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab @@ -0,0 +1,2504 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100470 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 490018} + m_Layer: 26 + m_Name: ObjectAttachmentPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &101548 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 471722} + - 81: {fileID: 8194540} + m_Layer: 0 + m_Name: FollowHead + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &105336 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 402768} + m_Layer: 0 + m_Name: NoSteamVRFallbackObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &107460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 409054} + - 23: {fileID: 2326430} + - 33: {fileID: 3390842} + - 114: {fileID: 11451472} + m_Layer: 0 + m_Name: PlayVolume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &107946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 447954} + - 114: {fileID: 11465950} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109154 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 422332} + - 33: {fileID: 3368578} + - 23: {fileID: 2353626} + m_Layer: 26 + m_Name: Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &110716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 496744} + - 20: {fileID: 2083460} + - 114: {fileID: 11476190} + m_Layer: 0 + m_Name: FallbackObjects + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114188 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 494198} + m_Layer: 0 + m_Name: SteamVRObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121078 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 453574} + - 135: {fileID: 13533284} + - 54: {fileID: 5452286} + m_Layer: 26 + m_Name: HeadCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125964 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 429506} + - 20: {fileID: 2014920} + - 114: {fileID: 11450526} + - 92: {fileID: 9215702} + - 124: {fileID: 12440092} + m_Layer: 0 + m_Name: VRCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &129006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 495400} + - 114: {fileID: 11405908} + m_Layer: 0 + m_Name: ControllerHoverHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &133480 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 471232} + - 114: {fileID: 11461462} + - 114: {fileID: 11464692} + - 114: {fileID: 114000013786455312} + m_Layer: 0 + m_Name: InputModule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135526 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 458882} + - 114: {fileID: 11497470} + - 54: {fileID: 5492098} + m_Layer: 26 + m_Name: FallbackHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &144230 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 476540} + - 114: {fileID: 11450312} + - 114: {fileID: 114000011273627542} + - 114: {fileID: 114000011734077242} + m_Layer: 26 + m_Name: LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &160596 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485514} + - 114: {fileID: 11401046} + - 114: {fileID: 114000011957598740} + - 114: {fileID: 114000010591715100} + m_Layer: 26 + m_Name: RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165334 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 480432} + m_Layer: 26 + m_Name: HoverPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167242 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 451882} + - 114: {fileID: 11461284} + m_Layer: 0 + m_Name: ControllerHoverHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &168724 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 472612} + - 114: {fileID: 114000012749712888} + - 114: {fileID: 11479638} + - 114: {fileID: 114000010474703086} + m_Layer: 0 + m_Name: '[SteamVR]' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171246 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 446772} + - 114: {fileID: 11489144} + m_Layer: 26 + m_Name: ControllerButtonHints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177230 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 413580} + - 114: {fileID: 11494192} + m_Layer: 26 + m_Name: ControllerButtonHints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &191996 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 476076} + - 136: {fileID: 13693334} + - 114: {fileID: 11455280} + - 54: {fileID: 5475726} + m_Layer: 27 + m_Name: BodyCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &402768 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105336} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 496744} + - {fileID: 458882} + m_Father: {fileID: 447954} + m_RootOrder: 1 +--- !u!4 &409054 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 447954} + m_RootOrder: 4 +--- !u!4 &413580 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177230} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 476540} + m_RootOrder: 3 +--- !u!4 &422332 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 458882} + m_RootOrder: 0 +--- !u!4 &429506 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125964} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494198} + m_RootOrder: 3 +--- !u!4 &446772 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171246} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 485514} + m_RootOrder: 3 +--- !u!4 &447954 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107946} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 494198} + - {fileID: 402768} + - {fileID: 471722} + - {fileID: 471232} + - {fileID: 409054} + - {fileID: 4000012025983752} + - {fileID: 4000011788863104} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &451882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167242} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0100001, y: 1.01, z: 1.0100001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 476540} + m_RootOrder: 2 +--- !u!4 &453574 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121078} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 471722} + m_RootOrder: 0 +--- !u!4 &458882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135526} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 422332} + m_Father: {fileID: 402768} + m_RootOrder: 1 +--- !u!4 &471232 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133480} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 447954} + m_RootOrder: 3 +--- !u!4 &471722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101548} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 453574} + m_Father: {fileID: 447954} + m_RootOrder: 2 +--- !u!4 &472612 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168724} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494198} + m_RootOrder: 5 +--- !u!4 &476076 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191996} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494198} + m_RootOrder: 0 +--- !u!4 &476540 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144230} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.25, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000012325712216} + - {fileID: 4000011474053580} + - {fileID: 451882} + - {fileID: 413580} + m_Father: {fileID: 494198} + m_RootOrder: 1 +--- !u!4 &480432 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165334} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.051999986, y: -0.015699983, z: -0.11630082} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 485514} + m_RootOrder: 0 +--- !u!4 &485514 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160596} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 480432} + - {fileID: 490018} + - {fileID: 495400} + - {fileID: 446772} + m_Father: {fileID: 494198} + m_RootOrder: 2 +--- !u!4 &490018 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100470} + m_LocalRotation: {x: 0.32650563, y: 0.212631, z: -0.6272114, w: 0.67437977} + m_LocalPosition: {x: -0.05199999, y: -0.0157, z: -0.11630082} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 135, y: 170, z: 90} + m_Children: [] + m_Father: {fileID: 485514} + m_RootOrder: 1 +--- !u!4 &494198 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114188} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 476076} + - {fileID: 476540} + - {fileID: 485514} + - {fileID: 429506} + - {fileID: 4000011699137176} + - {fileID: 472612} + m_Father: {fileID: 447954} + m_RootOrder: 0 +--- !u!4 &495400 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0099999, y: 1.01, z: 1.0099999} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 485514} + m_RootOrder: 2 +--- !u!4 &496744 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110716} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.75, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 402768} + m_RootOrder: 0 +--- !u!20 &2014920 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125964} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.028762981, g: 0.05902014, b: 0.1397059, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.05 + far clip plane: 300 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4160749567 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!20 &2083460 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110716} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.028762981, g: 0.05902014, b: 0.1397059, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.05 + far clip plane: 300 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4160749567 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!23 &2326430 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2353626 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109154} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 9e995e61de69d8647ae2b2d65eceab3f, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3368578 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109154} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3390842 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + m_Mesh: {fileID: 0} +--- !u!54 &5452286 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121078} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!54 &5475726 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191996} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!54 &5492098 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135526} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!81 &8194540 +AudioListener: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101548} + m_Enabled: 1 +--- !u!92 &9215702 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125964} + m_Enabled: 1 +--- !u!114 &11401046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29e3e4511966ba94d8ba0b98c6c62f82, type: 3} + m_Name: + m_EditorClassIdentifier: + otherHand: {fileID: 11450312} + handType: 2 + trackedObject: {fileID: 0} + grabPinchAction: + actionPath: /actions/default/in/GrabPinch + needsReinit: 0 + grabGripAction: + actionPath: /actions/default/in/GrabGrip + needsReinit: 0 + hapticAction: + actionPath: /actions/default/out/Haptic + needsReinit: 0 + uiInteractAction: + actionPath: /actions/default/in/InteractUI + needsReinit: 0 + useHoverSphere: 1 + hoverSphereTransform: {fileID: 480432} + hoverSphereRadius: 0.075 + hoverLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hoverUpdateInterval: 0.1 + useControllerHoverComponent: 1 + controllerHoverComponent: tip + controllerHoverRadius: 0.15 + useFingerJointHover: 1 + fingerJointHover: 10 + fingerJointHoverRadius: 0.05 + objectAttachmentPoint: {fileID: 490018} + noSteamVRFallbackCamera: {fileID: 0} + noSteamVRFallbackMaxDistanceNoItem: 10 + noSteamVRFallbackMaxDistanceWithItem: 0.5 + renderModelPrefab: {fileID: 1000012617731570, guid: 837f93beb9a614743ae3a2c0ada7c388, + type: 2} + renderModels: [] + mainRenderModel: {fileID: 0} + hoverhighlightRenderModel: {fileID: 0} + showDebugText: 0 + spewDebugText: 0 + showDebugInteractables: 0 +--- !u!114 &11405908 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8ca2cc563cc33f542a5d9f8f661184ba, type: 3} + m_Name: + m_EditorClassIdentifier: + highLightMaterial: {fileID: 2100000, guid: 7b939e5e799d98a469f594828ebab52e, type: 2} + fireHapticsOnHightlight: 1 +--- !u!114 &11450312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29e3e4511966ba94d8ba0b98c6c62f82, type: 3} + m_Name: + m_EditorClassIdentifier: + otherHand: {fileID: 11401046} + handType: 1 + trackedObject: {fileID: 0} + grabPinchAction: + actionPath: /actions/default/in/GrabPinch + needsReinit: 0 + grabGripAction: + actionPath: /actions/default/in/GrabGrip + needsReinit: 0 + hapticAction: + actionPath: /actions/default/out/Haptic + needsReinit: 0 + uiInteractAction: + actionPath: /actions/default/in/InteractUI + needsReinit: 0 + useHoverSphere: 1 + hoverSphereTransform: {fileID: 4000012325712216} + hoverSphereRadius: 0.075 + hoverLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hoverUpdateInterval: 0.1 + useControllerHoverComponent: 1 + controllerHoverComponent: tip + controllerHoverRadius: 0.15 + useFingerJointHover: 1 + fingerJointHover: 10 + fingerJointHoverRadius: 0.05 + objectAttachmentPoint: {fileID: 4000011474053580} + noSteamVRFallbackCamera: {fileID: 0} + noSteamVRFallbackMaxDistanceNoItem: 10 + noSteamVRFallbackMaxDistanceWithItem: 0.5 + renderModelPrefab: {fileID: 1000011547835092, guid: d5082f7d9f947374197e0a97786f4e40, + type: 2} + renderModels: [] + mainRenderModel: {fileID: 0} + hoverhighlightRenderModel: {fileID: 0} + showDebugText: 0 + spewDebugText: 0 + showDebugInteractables: 0 +--- !u!114 &11450526 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2ad1e469d4e3e04489f9a36419f1a4f8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11451472 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f0522eaef74d984591c060d05a095c8, type: 3} + m_Name: + m_EditorClassIdentifier: + borderThickness: -0.07 + wireframeHeight: 2 + drawWireframeWhenSelectedOnly: 0 + drawInGame: 1 + size: 0 + color: {r: 0, g: 1, b: 1, a: 0.922} + vertices: + - {x: 1.0000002, y: 0.01, z: -1.0000002} + - {x: -1.0000002, y: 0.01, z: -1.0000002} + - {x: -1.0000002, y: 0.01, z: 1.0000002} + - {x: 1.0000002, y: 0.01, z: 1.0000002} + - {x: 0.93000025, y: 0.01, z: -0.93000025} + - {x: -0.93000025, y: 0.01, z: -0.93000025} + - {x: -0.93000025, y: 0.01, z: 0.93000025} + - {x: 0.93000025, y: 0.01, z: 0.93000025} +--- !u!114 &11455280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191996} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1731d642c0b250b48bb8cdfb153d9792, type: 3} + m_Name: + m_EditorClassIdentifier: + head: {fileID: 0} +--- !u!114 &11461284 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8ca2cc563cc33f542a5d9f8f661184ba, type: 3} + m_Name: + m_EditorClassIdentifier: + highLightMaterial: {fileID: 2100000, guid: 7b939e5e799d98a469f594828ebab52e, type: 2} + fireHapticsOnHightlight: 1 +--- !u!114 &11461462 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 0 + m_DragThreshold: 0 +--- !u!114 &11464692 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c9e05292e0d62b542ac5bba92674a86d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11465950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 202a6e24b48d1684398409c47161adcb, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingOriginTransform: {fileID: 447954} + hmdTransforms: + - {fileID: 429506} + - {fileID: 496744} + hands: + - {fileID: 11450312} + - {fileID: 11401046} + - {fileID: 11497470} + headCollider: {fileID: 13533284} + rigSteamVR: {fileID: 114188} + rig2DFallback: {fileID: 105336} + audioListener: {fileID: 471722} + headsetOnHead: + actionPath: /actions/default/in/HeadsetOnHead + needsReinit: 0 + allowToggleTo2D: 1 +--- !u!114 &11476190 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6043f3be9a21bd74281f9770463bea00, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 4 + shiftSpeed: 16 + showInstructions: 1 +--- !u!114 &11479638 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e979227f3384fac4b8ca0b3550bf005c, type: 3} + m_Name: + m_EditorClassIdentifier: + externalCamera: {fileID: 0} + externalCameraConfigPath: externalcamera.cfg +--- !u!114 &11489144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea1001a6626353541ab4d4b39f4c3569, type: 3} + m_Name: + m_EditorClassIdentifier: + controllerMaterial: {fileID: 2100000, guid: 11b050e661ec0cf48a289a7266451e91, type: 2} + flashColor: {r: 1, g: 0.9170069, b: 0.453, a: 0.709} + textHintPrefab: {fileID: 140952, guid: 5fa42bb9e52706a42b8a1eaf0b54326a, type: 2} + hapticFlash: + actionPath: /actions/default/out/Haptic + needsReinit: 0 + autoSetWithControllerRangeOfMotion: 1 + debugHints: 0 +--- !u!114 &11494192 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea1001a6626353541ab4d4b39f4c3569, type: 3} + m_Name: + m_EditorClassIdentifier: + controllerMaterial: {fileID: 2100000, guid: 11b050e661ec0cf48a289a7266451e91, type: 2} + flashColor: {r: 1, g: 0.9170069, b: 0.453, a: 0.709} + textHintPrefab: {fileID: 140952, guid: 5fa42bb9e52706a42b8a1eaf0b54326a, type: 2} + hapticFlash: + actionPath: /actions/default/out/Haptic + needsReinit: 0 + autoSetWithControllerRangeOfMotion: 1 + debugHints: 0 +--- !u!114 &11497470 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29e3e4511966ba94d8ba0b98c6c62f82, type: 3} + m_Name: + m_EditorClassIdentifier: + otherHand: {fileID: 0} + handType: 0 + trackedObject: {fileID: 0} + grabPinchAction: + actionPath: /actions/default/in/GrabPinch + needsReinit: 0 + grabGripAction: + actionPath: /actions/default/in/GrabGrip + needsReinit: 0 + hapticAction: + actionPath: /actions/default/out/Haptic + needsReinit: 0 + uiInteractAction: + actionPath: /actions/default/in/InteractUI + needsReinit: 0 + useHoverSphere: 1 + hoverSphereTransform: {fileID: 0} + hoverSphereRadius: 0.05 + hoverLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hoverUpdateInterval: 0.1 + useControllerHoverComponent: 1 + controllerHoverComponent: tip + controllerHoverRadius: 0.05 + useFingerJointHover: 1 + fingerJointHover: 10 + fingerJointHoverRadius: 0.05 + objectAttachmentPoint: {fileID: 0} + noSteamVRFallbackCamera: {fileID: 2083460} + noSteamVRFallbackMaxDistanceNoItem: 10 + noSteamVRFallbackMaxDistanceWithItem: 0.5 + renderModelPrefab: {fileID: 0} + renderModels: [] + mainRenderModel: {fileID: 0} + hoverhighlightRenderModel: {fileID: 0} + showDebugText: 0 + spewDebugText: 0 + showDebugInteractables: 0 +--- !u!124 &12440092 +Behaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125964} + m_Enabled: 1 +--- !u!135 &13533284 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121078} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.12 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &13693334 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 191996} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + m_Radius: 0.25 + m_Height: 1.5 + m_Direction: 1 + m_Center: {x: 0, y: 0.75, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 107946} + m_IsPrefabParent: 1 +--- !u!1 &1000010010492814 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011546481910} + m_Layer: 0 + m_Name: dot_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010066870806 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011080958820} + m_Layer: 0 + m_Name: arrow 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010104029430 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012245205970} + m_Layer: 0 + m_Name: dot_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010477709332 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013459729244} + m_Layer: 0 + m_Name: dot_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010484474372 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011410624442} + m_Layer: 0 + m_Name: Armature + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010503880272 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011486474466} + m_Layer: 0 + m_Name: dot_3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010610840334 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012968930180} + m_Layer: 0 + m_Name: Armature + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011040480562 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013071250864} + m_Layer: 0 + m_Name: dot_4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011270389956 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012448748116} + m_Layer: 0 + m_Name: dot_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011357411894 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013208145148} + - 137: {fileID: 137000011507381152} + m_Layer: 0 + m_Name: arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011375182220 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013662614074} + m_Layer: 0 + m_Name: dot_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011381520856 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013350015900} + m_Layer: 0 + m_Name: dot_5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011498581176 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012025983752} + - 114: {fileID: 114000013709408034} + m_Layer: 0 + m_Name: DebugUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011503333666 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010885879976} + m_Layer: 0 + m_Name: dot_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011785618742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012936734234} + m_Layer: 0 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011982216214 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011199904346} + m_Layer: 0 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012112852726 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012934335342} + - 82: {fileID: 82000013955136614} + m_Layer: 0 + m_Name: Sound Effect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012312091976 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011018851326} + - 137: {fileID: 137000011452294138} + m_Layer: 0 + m_Name: arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012386841978 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010619905612} + m_Layer: 0 + m_Name: dot_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012412013898 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013080145864} + m_Layer: 0 + m_Name: dot_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012482183374 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000013379094620} + - 95: {fileID: 95000010079010534} + m_Layer: 0 + m_Name: snapTurnFX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012806303946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012155236140} + - 95: {fileID: 95000012983632464} + m_Layer: 0 + m_Name: snapTurnFX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013229560100 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012017034806} + m_Layer: 0 + m_Name: dot_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013281422588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011699137176} + - 114: {fileID: 114000010777378212} + m_Layer: 8 + m_Name: Overlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1000013428287994 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012325712216} + m_Layer: 26 + m_Name: HoverPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013804283954 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010554899216} + m_Layer: 0 + m_Name: arrow 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013829830258 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011788863104} + - 114: {fileID: 114000010547881750} + m_Layer: 0 + m_Name: Snap Turn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000014277073068 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000011474053580} + m_Layer: 26 + m_Name: ObjectAttachmentPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010554899216 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013804283954} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.008, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 0 +--- !u!4 &4000010619905612 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012386841978} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 3 +--- !u!4 &4000010885879976 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011503333666} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.003, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 2 +--- !u!4 &4000011018851326 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012312091976} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000013379094620} + m_RootOrder: 1 +--- !u!4 &4000011080958820 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010066870806} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.008, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 0 +--- !u!4 &4000011199904346 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011982216214} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000012155236140} + m_Father: {fileID: 4000011788863104} + m_RootOrder: 1 +--- !u!4 &4000011410624442 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010484474372} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000011080958820} + - {fileID: 4000012245205970} + - {fileID: 4000010885879976} + - {fileID: 4000012017034806} + - {fileID: 4000011486474466} + - {fileID: 4000013071250864} + - {fileID: 4000013350015900} + m_Father: {fileID: 4000013379094620} + m_RootOrder: 0 +--- !u!4 &4000011474053580 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014277073068} + m_LocalRotation: {x: 0.32650566, y: -0.21263102, z: 0.6272114, w: 0.67437977} + m_LocalPosition: {x: 0.051999986, y: -0.0157, z: -0.11630082} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 135, y: -170, z: -90} + m_Children: [] + m_Father: {fileID: 476540} + m_RootOrder: 1 +--- !u!4 &4000011486474466 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010503880272} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.003, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 4 +--- !u!4 &4000011546481910 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010010492814} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.003, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 4 +--- !u!4 &4000011699137176 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013281422588} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494198} + m_RootOrder: 4 +--- !u!4 &4000011788863104 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013829830258} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000012936734234} + - {fileID: 4000011199904346} + - {fileID: 4000012934335342} + m_Father: {fileID: 447954} + m_RootOrder: 6 +--- !u!4 &4000012017034806 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013229560100} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 3 +--- !u!4 &4000012025983752 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011498581176} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 447954} + m_RootOrder: 5 +--- !u!4 &4000012155236140 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012806303946} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 90, y: -180, z: -180} + m_Children: + - {fileID: 4000012968930180} + - {fileID: 4000013208145148} + m_Father: {fileID: 4000011199904346} + m_RootOrder: 0 +--- !u!4 &4000012245205970 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010104029430} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.006, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 1 +--- !u!4 &4000012325712216 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013428287994} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.051999986, y: -0.015699983, z: -0.11630082} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 476540} + m_RootOrder: 0 +--- !u!4 &4000012448748116 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011270389956} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.006, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 1 +--- !u!4 &4000012934335342 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012112852726} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011788863104} + m_RootOrder: 2 +--- !u!4 &4000012936734234 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011785618742} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000013379094620} + m_Father: {fileID: 4000011788863104} + m_RootOrder: 0 +--- !u!4 &4000012968930180 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010610840334} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 4000010554899216} + - {fileID: 4000012448748116} + - {fileID: 4000013080145864} + - {fileID: 4000010619905612} + - {fileID: 4000011546481910} + - {fileID: 4000013459729244} + - {fileID: 4000013662614074} + m_Father: {fileID: 4000012155236140} + m_RootOrder: 0 +--- !u!4 &4000013071250864 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011040480562} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.006, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 5 +--- !u!4 &4000013080145864 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012412013898} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0.003, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 2 +--- !u!4 &4000013208145148 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011357411894} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012155236140} + m_RootOrder: 1 +--- !u!4 &4000013350015900 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011381520856} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.009000001, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000011410624442} + m_RootOrder: 6 +--- !u!4 &4000013379094620 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012482183374} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 270, y: 0, z: -180} + m_Children: + - {fileID: 4000011410624442} + - {fileID: 4000011018851326} + m_Father: {fileID: 4000012936734234} + m_RootOrder: 0 +--- !u!4 &4000013459729244 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010477709332} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.006, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 5 +--- !u!4 &4000013662614074 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011375182220} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.009000001, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 4000012968930180} + m_RootOrder: 6 +--- !u!82 &82000013955136614 +AudioSource: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012112852726} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 0.2 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 50 + Pan2D: 0 + rolloffMode: 2 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!95 &95000010079010534 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012482183374} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 62dcc32f358950744a33cf3ced87eaed, type: 3} + m_Controller: {fileID: 9100000, guid: 24592bbd7bf3c5c489c70fba25d75ee0, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!95 &95000012983632464 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012806303946} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 62dcc32f358950744a33cf3ced87eaed, type: 3} + m_Controller: {fileID: 9100000, guid: 24592bbd7bf3c5c489c70fba25d75ee0, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!114 &114000010474703086 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27991c206a5e66147bb8ee3ef31c8bac, type: 3} + m_Name: + m_EditorClassIdentifier: + actionSet: + actionSetPath: /actions/default + forSources: 0 + disableAllOtherActionSets: 0 + activateOnStart: 1 + deactivateOnDestroy: 1 +--- !u!114 &114000010547881750 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013829830258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7434e43635fb2924583f5e0f2fb6ed3a, type: 3} + m_Name: + m_EditorClassIdentifier: + snapAngle: 45 + showTurnAnimation: 1 + snapTurnSource: {fileID: 82000013955136614} + rotateSound: {fileID: 8300000, guid: 973c016de5a1cf34ebb6b3477ca2da5c, type: 3} + rotateRightFX: {fileID: 1000011785618742} + rotateLeftFX: {fileID: 1000011982216214} + snapLeftAction: + actionPath: /actions/default/in/SnapTurnLeft + needsReinit: 0 + snapRightAction: + actionPath: /actions/default/in/SnapTurnRight + needsReinit: 0 + fadeScreen: 1 + fadeTime: 0.1 + screenFadeColor: {r: 0, g: 0, b: 0, a: 1} + distanceFromFace: 1.3 + additionalOffset: {x: 0, y: -0.3, z: 0} + canTurnEverySeconds: 0.5 +--- !u!114 &114000010591715100 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e75fe4b0c190eb4ba97e59f062510e9, type: 3} + m_Name: + m_EditorClassIdentifier: + handColliderPrefab: {fileID: 114000013167804218, guid: 2f378ddf4e9373548a3708d26c1d75a4, + type: 2} + handCollider: {fileID: 0} + clearanceCheckMask: + serializedVersion: 2 + m_Bits: 4294967039 + hand: {fileID: 0} +--- !u!114 &114000010777378212 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013281422588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46fe9e0b23166454c8cb73040321d78c, type: 3} + m_Name: + m_EditorClassIdentifier: + texture: {fileID: 8400000, guid: 005ed5a6df2f5ff468efd6497d37fefa, type: 2} + scale: 3 + distance: 1.25 + alpha: 1 + uvOffset: {x: 0, y: 0, z: 1, w: 1} + mouseScale: {x: 1, y: 1} + curvedRange: {x: 1, y: 2} + inputMethod: 0 +--- !u!114 &114000011273627542 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a5fb0ca93b55ef4b8d54b512b103341, type: 3} + m_Name: + m_EditorClassIdentifier: + poseAction: + actionPath: /actions/default/in/Pose + needsReinit: 0 + inputSource: 1 + origin: {fileID: 0} + onTransformUpdated: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_PoseEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onTransformChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_PoseEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onConnectedChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_ConnectedChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onTrackingChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_TrackingChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onDeviceIndexChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_DeviceIndexChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + broadcastDeviceChanges: 1 +--- !u!114 &114000011734077242 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e75fe4b0c190eb4ba97e59f062510e9, type: 3} + m_Name: + m_EditorClassIdentifier: + handColliderPrefab: {fileID: 114000010572907066, guid: 73f816dd3537a4c44988f340a5da70b9, + type: 2} + handCollider: {fileID: 0} + clearanceCheckMask: + serializedVersion: 2 + m_Bits: 4294967039 + hand: {fileID: 0} +--- !u!114 &114000011957598740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160596} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a5fb0ca93b55ef4b8d54b512b103341, type: 3} + m_Name: + m_EditorClassIdentifier: + poseAction: + actionPath: /actions/default/in/Pose + needsReinit: 0 + inputSource: 2 + origin: {fileID: 0} + onTransformUpdated: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_PoseEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onTransformChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_PoseEvent, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onConnectedChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_ConnectedChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onTrackingChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_TrackingChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + onDeviceIndexChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Valve.VR.SteamVR_Behaviour_Pose_DeviceIndexChangedEvent, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + broadcastDeviceChanges: 1 +--- !u!114 &114000012749712888 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aaa8a3afb932fe478757c1e89cf0cd5, type: 3} + m_Name: + m_EditorClassIdentifier: + initializeSteamVROnAwake: 1 + doNotDestroy: 1 + steamvr_render: {fileID: 0} +--- !u!114 &114000013709408034 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011498581176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f3bba2c36dd79242b3157dbcd876bf2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114000013786455312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!137 &137000011452294138 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012312091976} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 2100000, guid: b1e683e8bf011f94ab3c2f6d097aa87c, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 1 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 62dcc32f358950744a33cf3ced87eaed, type: 3} + m_Bones: + - {fileID: 4000012245205970} + - {fileID: 4000010885879976} + - {fileID: 4000012017034806} + - {fileID: 4000011486474466} + - {fileID: 4000013071250864} + - {fileID: 4000013350015900} + - {fileID: 4000011080958820} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000011080958820} + m_AABB: + m_Center: {x: -0.007633208, y: 0, z: 0} + m_Extent: {x: 0.009633208, y: 1.2246467e-19, z: 0.0019999999} + m_DirtyAABB: 0 +--- !u!137 &137000011507381152 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011357411894} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 2100000, guid: b1e683e8bf011f94ab3c2f6d097aa87c, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 1 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 62dcc32f358950744a33cf3ced87eaed, type: 3} + m_Bones: + - {fileID: 4000012448748116} + - {fileID: 4000013080145864} + - {fileID: 4000010619905612} + - {fileID: 4000011546481910} + - {fileID: 4000013459729244} + - {fileID: 4000013662614074} + - {fileID: 4000010554899216} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4000010554899216} + m_AABB: + m_Center: {x: -0.007633208, y: 0, z: 0} + m_Extent: {x: 0.009633208, y: 1.2246467e-19, z: 0.0019999999} + m_DirtyAABB: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab.meta new file mode 100644 index 00000000..2e494881 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc06161b6d97feb419f45f03b62e14b9 +timeCreated: 1430240738 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab new file mode 100644 index 00000000..f25bfe7d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000012617731570} + m_IsPrefabParent: 1 +--- !u!1 &1000012617731570 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012506454532} + - 114: {fileID: 114000011075384662} + m_Layer: 0 + m_Name: RightRenderModel Alien + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012506454532 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &114000011075384662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000013261032168, guid: a2330dd3e2bcb44428f727270af1d625, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab.meta new file mode 100644 index 00000000..19ee49dd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Alien.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3cb7e5f55e66cb40aea59db72c62365 +timeCreated: 1531273121 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab new file mode 100644 index 00000000..d6b165cf --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000012617731570} + m_IsPrefabParent: 1 +--- !u!1 &1000012617731570 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012506454532} + - 114: {fileID: 114000011075384662} + m_Layer: 0 + m_Name: RightRenderModel Slim + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012506454532 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000011075384662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000010304998954, guid: 6def53d002137b747aec0b29551e0e25, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab.meta new file mode 100644 index 00000000..e339ab2e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel Slim.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 837f93beb9a614743ae3a2c0ada7c388 +timeCreated: 1531273121 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab new file mode 100644 index 00000000..3b37532b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000012617731570} + m_IsPrefabParent: 1 +--- !u!1 &1000012617731570 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012506454532} + - 114: {fileID: 114000011075384662} + m_Layer: 0 + m_Name: RightRenderModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012506454532 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000011075384662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000010184414672, guid: 5dc81ef5cae96304586abbc6e4b5beb8, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab.meta new file mode 100644 index 00000000..9f0b920d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModel.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d07386f0ec952ec409dc7753bcf5746b +timeCreated: 1531273121 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab new file mode 100644 index 00000000..aae4ff9d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000012617731570} + m_IsPrefabParent: 1 +--- !u!1 &1000012617731570 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012506454532} + - 114: {fileID: 114000011075384662} + m_Layer: 0 + m_Name: RightRenderModelFloppy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012506454532 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &114000011075384662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012617731570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 847a4fd831847974bb8d16b469b643e3, type: 3} + m_Name: + m_EditorClassIdentifier: + handPrefab: {fileID: 1000010007006846, guid: 48a64ca49a112494fa864087de12b75c, type: 2} + displayHandByDefault: 1 + controllerPrefab: {fileID: 1000011460529826, guid: e789c2cc0c98a4c4198a4033fb8ccf96, + type: 2} + displayControllerByDefault: 0 diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab.meta new file mode 100644 index 00000000..77488877 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Prefabs/RightRenderModelFloppy.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c5fea2300124fe49a30168e29627064 +timeCreated: 1531273121 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts.meta new file mode 100644 index 00000000..50c9058c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 77a23888f82e2ab4c8bc825f20235e1e +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs new file mode 100644 index 00000000..e03cf4e8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs @@ -0,0 +1,35 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Collider dangling from the player's head +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( CapsuleCollider ) )] + public class BodyCollider : MonoBehaviour + { + public Transform head; + + private CapsuleCollider capsuleCollider; + + //------------------------------------------------- + void Awake() + { + capsuleCollider = GetComponent(); + } + + + //------------------------------------------------- + void FixedUpdate() + { + float distanceFromFloor = Vector3.Dot( head.localPosition, Vector3.up ); + capsuleCollider.height = Mathf.Max( capsuleCollider.radius, distanceFromFloor ); + transform.localPosition = head.localPosition - 0.5f * distanceFromFloor * Vector3.up; + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta new file mode 100644 index 00000000..788127c5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1731d642c0b250b48bb8cdfb153d9792 +timeCreated: 1544851959 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs new file mode 100644 index 00000000..19565bdf --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs @@ -0,0 +1,548 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Interactable that can be used to move in a circular motion +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class CircularDrive : MonoBehaviour + { + public enum Axis_t + { + XAxis, + YAxis, + ZAxis + }; + + [Tooltip( "The axis around which the circular drive will rotate in local space" )] + public Axis_t axisOfRotation = Axis_t.XAxis; + + [Tooltip( "Child GameObject which has the Collider component to initiate interaction, only needs to be set if there is more than one Collider child" )] + public Collider childCollider = null; + + [Tooltip( "A LinearMapping component to drive, if not specified one will be dynamically added to this GameObject" )] + public LinearMapping linearMapping; + + [Tooltip( "If true, the drive will stay manipulating as long as the button is held down, if false, it will stop if the controller moves out of the collider" )] + public bool hoverLock = false; + + [HeaderAttribute( "Limited Rotation" )] + [Tooltip( "If true, the rotation will be limited to [minAngle, maxAngle], if false, the rotation is unlimited" )] + public bool limited = false; + public Vector2 frozenDistanceMinMaxThreshold = new Vector2( 0.1f, 0.2f ); + public UnityEvent onFrozenDistanceThreshold; + + [HeaderAttribute( "Limited Rotation Min" )] + [Tooltip( "If limited is true, the specifies the lower limit, otherwise value is unused" )] + public float minAngle = -45.0f; + [Tooltip( "If limited, set whether drive will freeze its angle when the min angle is reached" )] + public bool freezeOnMin = false; + [Tooltip( "If limited, event invoked when minAngle is reached" )] + public UnityEvent onMinAngle; + + [HeaderAttribute( "Limited Rotation Max" )] + [Tooltip( "If limited is true, the specifies the upper limit, otherwise value is unused" )] + public float maxAngle = 45.0f; + [Tooltip( "If limited, set whether drive will freeze its angle when the max angle is reached" )] + public bool freezeOnMax = false; + [Tooltip( "If limited, event invoked when maxAngle is reached" )] + public UnityEvent onMaxAngle; + + [Tooltip( "If limited is true, this forces the starting angle to be startAngle, clamped to [minAngle, maxAngle]" )] + public bool forceStart = false; + [Tooltip( "If limited is true and forceStart is true, the starting angle will be this, clamped to [minAngle, maxAngle]" )] + public float startAngle = 0.0f; + + [Tooltip( "If true, the transform of the GameObject this component is on will be rotated accordingly" )] + public bool rotateGameObject = true; + + [Tooltip( "If true, the path of the Hand (red) and the projected value (green) will be drawn" )] + public bool debugPath = false; + [Tooltip( "If debugPath is true, this is the maximum number of GameObjects to create to draw the path" )] + public int dbgPathLimit = 50; + + [Tooltip( "If not null, the TextMesh will display the linear value and the angular value of this circular drive" )] + public TextMesh debugText = null; + + [Tooltip( "The output angle value of the drive in degrees, unlimited will increase or decrease without bound, take the 360 modulus to find number of rotations" )] + public float outAngle; + + private Quaternion start; + + private Vector3 worldPlaneNormal = new Vector3( 1.0f, 0.0f, 0.0f ); + private Vector3 localPlaneNormal = new Vector3( 1.0f, 0.0f, 0.0f ); + + private Vector3 lastHandProjected; + + private Color red = new Color( 1.0f, 0.0f, 0.0f ); + private Color green = new Color( 0.0f, 1.0f, 0.0f ); + + private GameObject[] dbgHandObjects; + private GameObject[] dbgProjObjects; + private GameObject dbgObjectsParent; + private int dbgObjectCount = 0; + private int dbgObjectIndex = 0; + + private bool driving = false; + + // If the drive is limited as is at min/max, angles greater than this are ignored + private float minMaxAngularThreshold = 1.0f; + + private bool frozen = false; + private float frozenAngle = 0.0f; + private Vector3 frozenHandWorldPos = new Vector3( 0.0f, 0.0f, 0.0f ); + private Vector2 frozenSqDistanceMinMaxThreshold = new Vector2( 0.0f, 0.0f ); + + private Hand handHoverLocked = null; + + private Interactable interactable; + + //------------------------------------------------- + private void Freeze( Hand hand ) + { + frozen = true; + frozenAngle = outAngle; + frozenHandWorldPos = hand.hoverSphereTransform.position; + frozenSqDistanceMinMaxThreshold.x = frozenDistanceMinMaxThreshold.x * frozenDistanceMinMaxThreshold.x; + frozenSqDistanceMinMaxThreshold.y = frozenDistanceMinMaxThreshold.y * frozenDistanceMinMaxThreshold.y; + } + + + //------------------------------------------------- + private void UnFreeze() + { + frozen = false; + frozenHandWorldPos.Set( 0.0f, 0.0f, 0.0f ); + } + + private void Awake() + { + interactable = this.GetComponent(); + } + + //------------------------------------------------- + private void Start() + { + if ( childCollider == null ) + { + childCollider = GetComponentInChildren(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = gameObject.AddComponent(); + } + + worldPlaneNormal = new Vector3( 0.0f, 0.0f, 0.0f ); + worldPlaneNormal[(int)axisOfRotation] = 1.0f; + + localPlaneNormal = worldPlaneNormal; + + if ( transform.parent ) + { + worldPlaneNormal = transform.parent.localToWorldMatrix.MultiplyVector( worldPlaneNormal ).normalized; + } + + if ( limited ) + { + start = Quaternion.identity; + outAngle = transform.localEulerAngles[(int)axisOfRotation]; + + if ( forceStart ) + { + outAngle = Mathf.Clamp( startAngle, minAngle, maxAngle ); + } + } + else + { + start = Quaternion.AngleAxis( transform.localEulerAngles[(int)axisOfRotation], localPlaneNormal ); + outAngle = 0.0f; + } + + if ( debugText ) + { + debugText.alignment = TextAlignment.Left; + debugText.anchor = TextAnchor.UpperLeft; + } + + UpdateAll(); + } + + + //------------------------------------------------- + void OnDisable() + { + if ( handHoverLocked ) + { + handHoverLocked.HideGrabHint(); + handHoverLocked.HoverUnlock(interactable); + handHoverLocked = null; + } + } + + + //------------------------------------------------- + private IEnumerator HapticPulses( Hand hand, float flMagnitude, int nCount ) + { + if ( hand != null ) + { + int nRangeMax = (int)Util.RemapNumberClamped( flMagnitude, 0.0f, 1.0f, 100.0f, 900.0f ); + nCount = Mathf.Clamp( nCount, 1, 10 ); + + //float hapticDuration = nRangeMax * nCount; + + //hand.TriggerHapticPulse(hapticDuration, nRangeMax, flMagnitude); + + for ( ushort i = 0; i < nCount; ++i ) + { + ushort duration = (ushort)Random.Range( 100, nRangeMax ); + hand.TriggerHapticPulse( duration ); + yield return new WaitForSeconds( .01f ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + hand.ShowGrabHint(); + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + hand.HideGrabHint(); + + if ( driving && hand ) + { + //hand.TriggerHapticPulse() //todo: fix + StartCoroutine( HapticPulses( hand, 1.0f, 10 ) ); + } + + driving = false; + handHoverLocked = null; + } + + private GrabTypes grabbedWithType; + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + GrabTypes startingGrabType = hand.GetGrabStarting(); + bool isGrabEnding = hand.IsGrabbingWithType(grabbedWithType) == false; + + if (grabbedWithType == GrabTypes.None && startingGrabType != GrabTypes.None) + { + grabbedWithType = startingGrabType; + // Trigger was just pressed + lastHandProjected = ComputeToTransformProjected( hand.hoverSphereTransform ); + + if ( hoverLock ) + { + hand.HoverLock(interactable); + handHoverLocked = hand; + } + + driving = true; + + ComputeAngle( hand ); + UpdateAll(); + + hand.HideGrabHint(); + } + else if (grabbedWithType != GrabTypes.None && isGrabEnding) + { + // Trigger was just released + if ( hoverLock ) + { + hand.HoverUnlock(interactable); + handHoverLocked = null; + } + + driving = false; + grabbedWithType = GrabTypes.None; + } + + if ( driving && isGrabEnding == false && hand.hoveringInteractable == this.interactable ) + { + ComputeAngle( hand ); + UpdateAll(); + } + } + + + //------------------------------------------------- + private Vector3 ComputeToTransformProjected( Transform xForm ) + { + Vector3 toTransform = ( xForm.position - transform.position ).normalized; + Vector3 toTransformProjected = new Vector3( 0.0f, 0.0f, 0.0f ); + + // Need a non-zero distance from the hand to the center of the CircularDrive + if ( toTransform.sqrMagnitude > 0.0f ) + { + toTransformProjected = Vector3.ProjectOnPlane( toTransform, worldPlaneNormal ).normalized; + } + else + { + Debug.LogFormat("[SteamVR Interaction] The collider needs to be a minimum distance away from the CircularDrive GameObject {0}", gameObject.ToString() ); + Debug.Assert( false, string.Format("[SteamVR Interaction] The collider needs to be a minimum distance away from the CircularDrive GameObject {0}", gameObject.ToString() ) ); + } + + if ( debugPath && dbgPathLimit > 0 ) + { + DrawDebugPath( xForm, toTransformProjected ); + } + + return toTransformProjected; + } + + + //------------------------------------------------- + private void DrawDebugPath( Transform xForm, Vector3 toTransformProjected ) + { + if ( dbgObjectCount == 0 ) + { + dbgObjectsParent = new GameObject( "Circular Drive Debug" ); + dbgHandObjects = new GameObject[dbgPathLimit]; + dbgProjObjects = new GameObject[dbgPathLimit]; + dbgObjectCount = dbgPathLimit; + dbgObjectIndex = 0; + } + + //Actual path + GameObject gSphere = null; + + if ( dbgHandObjects[dbgObjectIndex] ) + { + gSphere = dbgHandObjects[dbgObjectIndex]; + } + else + { + gSphere = GameObject.CreatePrimitive( PrimitiveType.Sphere ); + gSphere.transform.SetParent( dbgObjectsParent.transform ); + dbgHandObjects[dbgObjectIndex] = gSphere; + } + + gSphere.name = string.Format( "actual_{0}", (int)( ( 1.0f - red.r ) * 10.0f ) ); + gSphere.transform.position = xForm.position; + gSphere.transform.rotation = Quaternion.Euler( 0.0f, 0.0f, 0.0f ); + gSphere.transform.localScale = new Vector3( 0.004f, 0.004f, 0.004f ); + gSphere.gameObject.GetComponent().material.color = red; + + if ( red.r > 0.1f ) + { + red.r -= 0.1f; + } + else + { + red.r = 1.0f; + } + + //Projected path + gSphere = null; + + if ( dbgProjObjects[dbgObjectIndex] ) + { + gSphere = dbgProjObjects[dbgObjectIndex]; + } + else + { + gSphere = GameObject.CreatePrimitive( PrimitiveType.Sphere ); + gSphere.transform.SetParent( dbgObjectsParent.transform ); + dbgProjObjects[dbgObjectIndex] = gSphere; + } + + gSphere.name = string.Format( "projed_{0}", (int)( ( 1.0f - green.g ) * 10.0f ) ); + gSphere.transform.position = transform.position + toTransformProjected * 0.25f; + gSphere.transform.rotation = Quaternion.Euler( 0.0f, 0.0f, 0.0f ); + gSphere.transform.localScale = new Vector3( 0.004f, 0.004f, 0.004f ); + gSphere.gameObject.GetComponent().material.color = green; + + if ( green.g > 0.1f ) + { + green.g -= 0.1f; + } + else + { + green.g = 1.0f; + } + + dbgObjectIndex = ( dbgObjectIndex + 1 ) % dbgObjectCount; + } + + + //------------------------------------------------- + // Updates the LinearMapping value from the angle + //------------------------------------------------- + private void UpdateLinearMapping() + { + if ( limited ) + { + // Map it to a [0, 1] value + linearMapping.value = ( outAngle - minAngle ) / ( maxAngle - minAngle ); + } + else + { + // Normalize to [0, 1] based on 360 degree windings + float flTmp = outAngle / 360.0f; + linearMapping.value = flTmp - Mathf.Floor( flTmp ); + } + + UpdateDebugText(); + } + + + //------------------------------------------------- + // Updates the LinearMapping value from the angle + //------------------------------------------------- + private void UpdateGameObject() + { + if ( rotateGameObject ) + { + transform.localRotation = start * Quaternion.AngleAxis( outAngle, localPlaneNormal ); + } + } + + + //------------------------------------------------- + // Updates the Debug TextMesh with the linear mapping value and the angle + //------------------------------------------------- + private void UpdateDebugText() + { + if ( debugText ) + { + debugText.text = string.Format( "Linear: {0}\nAngle: {1}\n", linearMapping.value, outAngle ); + } + } + + + //------------------------------------------------- + // Updates the Debug TextMesh with the linear mapping value and the angle + //------------------------------------------------- + private void UpdateAll() + { + UpdateLinearMapping(); + UpdateGameObject(); + UpdateDebugText(); + } + + + //------------------------------------------------- + // Computes the angle to rotate the game object based on the change in the transform + //------------------------------------------------- + private void ComputeAngle( Hand hand ) + { + Vector3 toHandProjected = ComputeToTransformProjected( hand.hoverSphereTransform ); + + if ( !toHandProjected.Equals( lastHandProjected ) ) + { + float absAngleDelta = Vector3.Angle( lastHandProjected, toHandProjected ); + + if ( absAngleDelta > 0.0f ) + { + if ( frozen ) + { + float frozenSqDist = ( hand.hoverSphereTransform.position - frozenHandWorldPos ).sqrMagnitude; + if ( frozenSqDist > frozenSqDistanceMinMaxThreshold.x ) + { + outAngle = frozenAngle + Random.Range( -1.0f, 1.0f ); + + float magnitude = Util.RemapNumberClamped( frozenSqDist, frozenSqDistanceMinMaxThreshold.x, frozenSqDistanceMinMaxThreshold.y, 0.0f, 1.0f ); + if ( magnitude > 0 ) + { + StartCoroutine( HapticPulses( hand, magnitude, 10 ) ); + } + else + { + StartCoroutine( HapticPulses( hand, 0.5f, 10 ) ); + } + + if ( frozenSqDist >= frozenSqDistanceMinMaxThreshold.y ) + { + onFrozenDistanceThreshold.Invoke(); + } + } + } + else + { + Vector3 cross = Vector3.Cross( lastHandProjected, toHandProjected ).normalized; + float dot = Vector3.Dot( worldPlaneNormal, cross ); + + float signedAngleDelta = absAngleDelta; + + if ( dot < 0.0f ) + { + signedAngleDelta = -signedAngleDelta; + } + + if ( limited ) + { + float angleTmp = Mathf.Clamp( outAngle + signedAngleDelta, minAngle, maxAngle ); + + if ( outAngle == minAngle ) + { + if ( angleTmp > minAngle && absAngleDelta < minMaxAngularThreshold ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else if ( outAngle == maxAngle ) + { + if ( angleTmp < maxAngle && absAngleDelta < minMaxAngularThreshold ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else if ( angleTmp == minAngle ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + onMinAngle.Invoke(); + if ( freezeOnMin ) + { + Freeze( hand ); + } + } + else if ( angleTmp == maxAngle ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + onMaxAngle.Invoke(); + if ( freezeOnMax ) + { + Freeze( hand ); + } + } + else + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else + { + outAngle += signedAngleDelta; + lastHandProjected = toHandProjected; + } + } + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta new file mode 100644 index 00000000..4d531759 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f32883eed859804dbb0c5fedac91496 +timeCreated: 1544851960 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs new file mode 100644 index 00000000..6a153c07 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs @@ -0,0 +1,192 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Throwable that uses physics joints to attach instead of just +// parenting +// +//============================================================================= + +using UnityEngine; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class ComplexThrowable : MonoBehaviour + { + public enum AttachMode + { + FixedJoint, + Force, + } + + public float attachForce = 800.0f; + public float attachForceDamper = 25.0f; + + public AttachMode attachMode = AttachMode.FixedJoint; + + [EnumFlags] + public Hand.AttachmentFlags attachmentFlags = 0; + + private List holdingHands = new List(); + private List holdingBodies = new List(); + private List holdingPoints = new List(); + + private List rigidBodies = new List(); + + //------------------------------------------------- + void Awake() + { + GetComponentsInChildren( rigidBodies ); + } + + + //------------------------------------------------- + void Update() + { + for ( int i = 0; i < holdingHands.Count; i++ ) + { + if (holdingHands[i].IsGrabEnding(this.gameObject)) + { + PhysicsDetach( holdingHands[i] ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + if ( holdingHands.IndexOf( hand ) == -1 ) + { + if ( hand.isActive ) + { + hand.TriggerHapticPulse( 800 ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + if ( holdingHands.IndexOf( hand ) == -1 ) + { + if (hand.isActive) + { + hand.TriggerHapticPulse( 500 ); + } + } + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + GrabTypes startingGrabType = hand.GetGrabStarting(); + + if (startingGrabType != GrabTypes.None) + { + PhysicsAttach( hand, startingGrabType ); + } + } + + + //------------------------------------------------- + private void PhysicsAttach( Hand hand, GrabTypes startingGrabType ) + { + PhysicsDetach( hand ); + + Rigidbody holdingBody = null; + Vector3 holdingPoint = Vector3.zero; + + // The hand should grab onto the nearest rigid body + float closestDistance = float.MaxValue; + for ( int i = 0; i < rigidBodies.Count; i++ ) + { + float distance = Vector3.Distance( rigidBodies[i].worldCenterOfMass, hand.transform.position ); + if ( distance < closestDistance ) + { + holdingBody = rigidBodies[i]; + closestDistance = distance; + } + } + + // Couldn't grab onto a body + if ( holdingBody == null ) + return; + + // Create a fixed joint from the hand to the holding body + if ( attachMode == AttachMode.FixedJoint ) + { + Rigidbody handRigidbody = Util.FindOrAddComponent( hand.gameObject ); + handRigidbody.isKinematic = true; + + FixedJoint handJoint = hand.gameObject.AddComponent(); + handJoint.connectedBody = holdingBody; + } + + // Don't let the hand interact with other things while it's holding us + hand.HoverLock( null ); + + // Affix this point + Vector3 offset = hand.transform.position - holdingBody.worldCenterOfMass; + offset = Mathf.Min( offset.magnitude, 1.0f ) * offset.normalized; + holdingPoint = holdingBody.transform.InverseTransformPoint( holdingBody.worldCenterOfMass + offset ); + + hand.AttachObject( this.gameObject, startingGrabType, attachmentFlags ); + + // Update holding list + holdingHands.Add( hand ); + holdingBodies.Add( holdingBody ); + holdingPoints.Add( holdingPoint ); + } + + + //------------------------------------------------- + private bool PhysicsDetach( Hand hand ) + { + int i = holdingHands.IndexOf( hand ); + + if ( i != -1 ) + { + // Detach this object from the hand + holdingHands[i].DetachObject( this.gameObject, false ); + + // Allow the hand to do other things + holdingHands[i].HoverUnlock( null ); + + // Delete any existing joints from the hand + if ( attachMode == AttachMode.FixedJoint ) + { + Destroy( holdingHands[i].GetComponent() ); + } + + Util.FastRemove( holdingHands, i ); + Util.FastRemove( holdingBodies, i ); + Util.FastRemove( holdingPoints, i ); + + return true; + } + + return false; + } + + + //------------------------------------------------- + void FixedUpdate() + { + if ( attachMode == AttachMode.Force ) + { + for ( int i = 0; i < holdingHands.Count; i++ ) + { + Vector3 targetPoint = holdingBodies[i].transform.TransformPoint( holdingPoints[i] ); + Vector3 vdisplacement = holdingHands[i].transform.position - targetPoint; + + holdingBodies[i].AddForceAtPosition( attachForce * vdisplacement, targetPoint, ForceMode.Acceleration ); + holdingBodies[i].AddForceAtPosition( -attachForceDamper * holdingBodies[i].GetPointVelocity( targetPoint ), targetPoint, ForceMode.Acceleration ); + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta new file mode 100644 index 00000000..c3510524 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad77666522338cf49ba83b80b25e6476 +timeCreated: 1544851960 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs new file mode 100644 index 00000000..95436dd1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs @@ -0,0 +1,132 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Highlights the controller when hovering over interactables +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ControllerHoverHighlight : MonoBehaviour + { + public Material highLightMaterial; + public bool fireHapticsOnHightlight = true; + + protected Hand hand; + + protected RenderModel renderModel; + + protected SteamVR_Events.Action renderModelLoadedAction; + + protected void Awake() + { + hand = GetComponentInParent(); + } + + protected void OnHandInitialized(int deviceIndex) + { + GameObject renderModelGameObject = GameObject.Instantiate(hand.renderModelPrefab); + renderModelGameObject.transform.parent = this.transform; + renderModelGameObject.transform.localPosition = Vector3.zero; + renderModelGameObject.transform.localRotation = Quaternion.identity; + renderModelGameObject.transform.localScale = hand.renderModelPrefab.transform.localScale; + + + renderModel = renderModelGameObject.GetComponent(); + + renderModel.SetInputSource(hand.handType); + renderModel.OnHandInitialized(deviceIndex); + renderModel.SetMaterial(highLightMaterial); + + hand.SetHoverRenderModel(renderModel); + renderModel.onControllerLoaded += RenderModel_onControllerLoaded; + renderModel.Hide(); + } + + private void RenderModel_onControllerLoaded() + { + renderModel.Hide(); + } + + + //------------------------------------------------- + protected void OnParentHandHoverBegin(Interactable other) + { + if (!this.isActiveAndEnabled) + { + return; + } + + if (other.transform.parent != transform.parent) + { + ShowHighlight(); + } + } + + + //------------------------------------------------- + private void OnParentHandHoverEnd(Interactable other) + { + HideHighlight(); + } + + + //------------------------------------------------- + private void OnParentHandInputFocusAcquired() + { + if (!this.isActiveAndEnabled) + { + return; + } + + if (hand.hoveringInteractable && hand.hoveringInteractable.transform.parent != transform.parent) + { + ShowHighlight(); + } + } + + + //------------------------------------------------- + private void OnParentHandInputFocusLost() + { + HideHighlight(); + } + + + //------------------------------------------------- + public void ShowHighlight() + { + if (renderModel == null) + { + return; + } + + if (fireHapticsOnHightlight) + { + hand.TriggerHapticPulse(500); + } + + renderModel.Show(); + } + + + //------------------------------------------------- + public void HideHighlight() + { + if (renderModel == null) + { + return; + } + + if (fireHapticsOnHightlight) + { + hand.TriggerHapticPulse(300); + } + + renderModel.Hide(); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta new file mode 100644 index 00000000..7f3b9716 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8ca2cc563cc33f542a5d9f8f661184ba +timeCreated: 1544851960 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs new file mode 100644 index 00000000..ae37001a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs @@ -0,0 +1,28 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom Unity Events that take in additional parameters +// +//============================================================================= + +using UnityEngine.Events; +using System; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public static class CustomEvents + { + //------------------------------------------------- + [System.Serializable] + public class UnityEventSingleFloat : UnityEvent + { + } + + + //------------------------------------------------- + [System.Serializable] + public class UnityEventHand : UnityEvent + { + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta new file mode 100644 index 00000000..c105b596 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f3294e06115d0047a2ac7659a11b168 +timeCreated: 1544851960 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs new file mode 100644 index 00000000..21b48757 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs @@ -0,0 +1,51 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Debug UI shown for the player +// +//============================================================================= + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DebugUI : MonoBehaviour + { + private Player player; + + //------------------------------------------------- + static private DebugUI _instance; + static public DebugUI instance + { + get + { + if ( _instance == null ) + { + _instance = GameObject.FindObjectOfType(); + } + return _instance; + } + } + + + //------------------------------------------------- + void Start() + { + player = Player.instance; + } + + +#if !HIDE_DEBUG_UI + //------------------------------------------------- + private void OnGUI() + { + if (Debug.isDebugBuild) + { + player.Draw2DDebug(); + } + } +#endif + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta new file mode 100644 index 00000000..0cee75a5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f3bba2c36dd79242b3157dbcd876bf2 +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs new file mode 100644 index 00000000..5cf17d1a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs @@ -0,0 +1,22 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when it is detached from the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class DestroyOnDetachedFromHand : MonoBehaviour + { + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + Destroy( gameObject ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta new file mode 100644 index 00000000..15b9e509 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5240357a2468cdc4291b266bee3cb9b9 +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs new file mode 100644 index 00000000..259ee154 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs @@ -0,0 +1,36 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when its particle system dies +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( ParticleSystem ) )] + public class DestroyOnParticleSystemDeath : MonoBehaviour + { + private ParticleSystem particles; + + //------------------------------------------------- + void Awake() + { + particles = GetComponent(); + + InvokeRepeating( "CheckParticleSystem", 0.1f, 0.1f ); + } + + + //------------------------------------------------- + private void CheckParticleSystem() + { + if ( !particles.IsAlive() ) + { + Destroy( this.gameObject ); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta new file mode 100644 index 00000000..f14919e2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 69cad530c565c714491a326c21accb90 +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs new file mode 100644 index 00000000..2537d9a9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs @@ -0,0 +1,38 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when it enters a trigger +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DestroyOnTriggerEnter : MonoBehaviour + { + public string tagFilter; + + private bool useTag; + + //------------------------------------------------- + void Start() + { + if ( !string.IsNullOrEmpty( tagFilter ) ) + { + useTag = true; + } + } + + + //------------------------------------------------- + void OnTriggerEnter( Collider collider ) + { + if ( !useTag || ( useTag && collider.gameObject.tag == tagFilter ) ) + { + Destroy( collider.gameObject.transform.root.gameObject ); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta new file mode 100644 index 00000000..de73e8d5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7ba84888c9d4c504cb752a3904551a6c +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs new file mode 100644 index 00000000..66d5f5da --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs @@ -0,0 +1,44 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Triggers haptic pulses based on distance between 2 positions +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DistanceHaptics : MonoBehaviour + { + public Transform firstTransform; + public Transform secondTransform; + + public AnimationCurve distanceIntensityCurve = AnimationCurve.Linear( 0.0f, 800.0f, 1.0f, 800.0f ); + public AnimationCurve pulseIntervalCurve = AnimationCurve.Linear( 0.0f, 0.01f, 1.0f, 0.0f ); + + //------------------------------------------------- + IEnumerator Start() + { + while ( true ) + { + float distance = Vector3.Distance( firstTransform.position, secondTransform.position ); + + Hand hand = GetComponentInParent(); + if (hand != null) + { + float pulse = distanceIntensityCurve.Evaluate( distance ); + hand.TriggerHapticPulse((ushort)pulse); + + //SteamVR_Controller.Input( (int)trackedObject.index ).TriggerHapticPulse( (ushort)pulse ); + } + + float nextPulse = pulseIntervalCurve.Evaluate( distance ); + + yield return new WaitForSeconds( nextPulse ); + } + + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta new file mode 100644 index 00000000..cb93ac62 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65ef702aaa09d3f46a75659678b1a711 +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs new file mode 100644 index 00000000..d2661111 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs @@ -0,0 +1,21 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object won't be destroyed when a new scene is loaded +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DontDestroyOnLoad : MonoBehaviour + { + //------------------------------------------------- + void Awake() + { + DontDestroyOnLoad( this ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta new file mode 100644 index 00000000..18bba528 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4d1c07a6449b0ca439ee6fac5f6f7d83 +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs new file mode 100644 index 00000000..30464aa1 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs @@ -0,0 +1,32 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Allows Enums to be shown in the inspector as flags +// +//============================================================================= + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class EnumFlags : PropertyAttribute + { + public EnumFlags() { } + } + + +#if UNITY_EDITOR + //------------------------------------------------------------------------- + [CustomPropertyDrawer( typeof( EnumFlags ) )] + public class EnumFlagsPropertyDrawer : PropertyDrawer + { + public override void OnGUI( Rect position, SerializedProperty property, GUIContent label ) + { + property.intValue = EditorGUI.MaskField( position, label, property.intValue, property.enumNames ); + } + } +#endif +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta new file mode 100644 index 00000000..703fe1f8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88a2ccbdad9948c45b28f5e63902705b +timeCreated: 1544851961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs new file mode 100644 index 00000000..3673267a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs @@ -0,0 +1,76 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Flip Object to match which hand you pick it up in +// +//============================================================================= + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Valve.VR.InteractionSystem +{ + + public enum WhichHand + { + Left, + Right + } + + [RequireComponent(typeof(Throwable))] + + public class Equippable : MonoBehaviour + { + + [Tooltip("Array of children you do not want to be mirrored. Text, logos, etc.")] + public Transform[] antiFlip; + + public WhichHand defaultHand = WhichHand.Right; + + private Vector3 initialScale; + private Interactable interactable; + + [HideInInspector] + public SteamVR_Input_Sources attachedHandType + { + get + { + if (interactable.attachedToHand) + return interactable.attachedToHand.handType; + else + return SteamVR_Input_Sources.Any; + } + } + + private void Start() + { + initialScale = transform.localScale; + interactable = GetComponent(); + } + + private void Update() + { + if (interactable.attachedToHand) + { + Vector3 flipScale = initialScale; + if ((attachedHandType == SteamVR_Input_Sources.RightHand && defaultHand == WhichHand.Right) || (attachedHandType == SteamVR_Input_Sources.LeftHand && defaultHand == WhichHand.Left)) + { + flipScale.x *= 1; + for (int transformIndex = 0; transformIndex < antiFlip.Length; transformIndex++) + { + antiFlip[transformIndex].localScale = new Vector3(1, 1, 1); + } + } + else + { + flipScale.x *= -1; + for (int transformIndex = 0; transformIndex < antiFlip.Length; transformIndex++) + { + antiFlip[transformIndex].localScale = new Vector3(-1, 1, 1); + } + } + transform.localScale = flipScale; + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs.meta new file mode 100644 index 00000000..e5c25790 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Equippable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ecd73422fbc4be54a9f4d8f3972f8579 +timeCreated: 1544851962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs new file mode 100644 index 00000000..3bf7b0c0 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs @@ -0,0 +1,106 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Controls for the non-VR debug camera +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Camera ) )] + public class FallbackCameraController : MonoBehaviour + { + public float speed = 4.0f; + public float shiftSpeed = 16.0f; + public bool showInstructions = true; + + private Vector3 startEulerAngles; + private Vector3 startMousePosition; + private float realTime; + + //------------------------------------------------- + void OnEnable() + { + realTime = Time.realtimeSinceStartup; + } + + + //------------------------------------------------- + void Update() + { + float forward = 0.0f; + if ( Input.GetKey( KeyCode.W ) || Input.GetKey( KeyCode.UpArrow ) ) + { + forward += 1.0f; + } + if ( Input.GetKey( KeyCode.S ) || Input.GetKey( KeyCode.DownArrow ) ) + { + forward -= 1.0f; + } + + float up = 0.0f; + if (Input.GetKey(KeyCode.E)) + { + up += 1.0f; + } + if (Input.GetKey(KeyCode.Q)) + { + up -= 1.0f; + } + + float right = 0.0f; + if ( Input.GetKey( KeyCode.D ) || Input.GetKey( KeyCode.RightArrow ) ) + { + right += 1.0f; + } + if ( Input.GetKey( KeyCode.A ) || Input.GetKey( KeyCode.LeftArrow ) ) + { + right -= 1.0f; + } + + float currentSpeed = speed; + if ( Input.GetKey( KeyCode.LeftShift ) || Input.GetKey( KeyCode.RightShift ) ) + { + currentSpeed = shiftSpeed; + } + + float realTimeNow = Time.realtimeSinceStartup; + float deltaRealTime = realTimeNow - realTime; + realTime = realTimeNow; + + Vector3 delta = new Vector3( right, up, forward ) * currentSpeed * deltaRealTime; + + transform.position += transform.TransformDirection( delta ); + + Vector3 mousePosition = Input.mousePosition; + + if ( Input.GetMouseButtonDown( 1 ) /* right mouse */) + { + startMousePosition = mousePosition; + startEulerAngles = transform.localEulerAngles; + } + + if ( Input.GetMouseButton( 1 ) /* right mouse */) + { + Vector3 offset = mousePosition - startMousePosition; + transform.localEulerAngles = startEulerAngles + new Vector3( -offset.y * 360.0f / Screen.height, offset.x * 360.0f / Screen.width, 0.0f ); + } + } + + + //------------------------------------------------- + void OnGUI() + { + if ( showInstructions ) + { + GUI.Label( new Rect( 10.0f, 10.0f, 600.0f, 400.0f ), + "WASD EQ/Arrow Keys to translate the camera\n" + + "Right mouse click to rotate the camera\n" + + "Left mouse click for standard interactions.\n" ); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta new file mode 100644 index 00000000..1b77ab80 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6043f3be9a21bd74281f9770463bea00 +timeCreated: 1544851962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs new file mode 100644 index 00000000..e9768d6c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs @@ -0,0 +1,18 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Valve.VR.InteractionSystem +{ + public enum GrabTypes + { + None, + Trigger, + Pinch, + Grip, + Scripted, + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs.meta new file mode 100644 index 00000000..1343bb0b --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/GrabTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 99eaa65760d05f74b811106b4945924e +timeCreated: 1544851962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs new file mode 100644 index 00000000..f1755454 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs @@ -0,0 +1,1686 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: The hands used by the player in the vr interaction system +// +//============================================================================= + +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine.Events; +using System.Threading; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + // Links with an appropriate SteamVR controller and facilitates + // interactions with objects in the virtual world. + //------------------------------------------------------------------------- + public class Hand : MonoBehaviour + { + // The flags used to determine how an object is attached to the hand. + [Flags] + public enum AttachmentFlags + { + SnapOnAttach = 1 << 0, // The object should snap to the position of the specified attachment point on the hand. + DetachOthers = 1 << 1, // Other objects attached to this hand will be detached. + DetachFromOtherHand = 1 << 2, // This object will be detached from the other hand. + ParentToHand = 1 << 3, // The object will be parented to the hand. + VelocityMovement = 1 << 4, // The object will attempt to move to match the position and rotation of the hand. + TurnOnKinematic = 1 << 5, // The object will not respond to external physics. + TurnOffGravity = 1 << 6, // The object will not respond to external physics. + AllowSidegrade = 1 << 7, // The object is able to switch from a pinch grab to a grip grab. Decreases likelyhood of a good throw but also decreases likelyhood of accidental drop + }; + + public const AttachmentFlags defaultAttachmentFlags = AttachmentFlags.ParentToHand | + AttachmentFlags.DetachOthers | + AttachmentFlags.DetachFromOtherHand | + AttachmentFlags.TurnOnKinematic | + AttachmentFlags.SnapOnAttach; + + public Hand otherHand; + public SteamVR_Input_Sources handType; + + public SteamVR_Behaviour_Pose trackedObject; + + public SteamVR_Action_Boolean grabPinchAction = SteamVR_Input.GetAction("GrabPinch"); + + public SteamVR_Action_Boolean grabGripAction = SteamVR_Input.GetAction("GrabGrip"); + + public SteamVR_Action_Vibration hapticAction = SteamVR_Input.GetAction("Haptic"); + + public SteamVR_Action_Boolean uiInteractAction = SteamVR_Input.GetAction("InteractUI"); + + public bool useHoverSphere = true; + public Transform hoverSphereTransform; + public float hoverSphereRadius = 0.05f; + public LayerMask hoverLayerMask = -1; + public float hoverUpdateInterval = 0.1f; + + public bool useControllerHoverComponent = true; + public string controllerHoverComponent = "tip"; + public float controllerHoverRadius = 0.075f; + + public bool useFingerJointHover = true; + public SteamVR_Skeleton_JointIndexEnum fingerJointHover = SteamVR_Skeleton_JointIndexEnum.indexTip; + public float fingerJointHoverRadius = 0.025f; + + [Tooltip("A transform on the hand to center attached objects on")] + public Transform objectAttachmentPoint; + + public Camera noSteamVRFallbackCamera; + public float noSteamVRFallbackMaxDistanceNoItem = 10.0f; + public float noSteamVRFallbackMaxDistanceWithItem = 0.5f; + private float noSteamVRFallbackInteractorDistance = -1.0f; + + public GameObject renderModelPrefab; + [HideInInspector] + public List renderModels = new List(); + [HideInInspector] + public RenderModel mainRenderModel; + [HideInInspector] + public RenderModel hoverhighlightRenderModel; + + public bool showDebugText = false; + public bool spewDebugText = false; + public bool showDebugInteractables = false; + + public struct AttachedObject + { + public GameObject attachedObject; + public Interactable interactable; + public Rigidbody attachedRigidbody; + public CollisionDetectionMode collisionDetectionMode; + public bool attachedRigidbodyWasKinematic; + public bool attachedRigidbodyUsedGravity; + public GameObject originalParent; + public bool isParentedToHand; + public GrabTypes grabbedWithType; + public AttachmentFlags attachmentFlags; + public Vector3 initialPositionalOffset; + public Quaternion initialRotationalOffset; + public Transform attachedOffsetTransform; + public Transform handAttachmentPointTransform; + public Vector3 easeSourcePosition; + public Quaternion easeSourceRotation; + public float attachTime; + public AllowTeleportWhileAttachedToHand allowTeleportWhileAttachedToHand; + + public bool HasAttachFlag(AttachmentFlags flag) + { + return (attachmentFlags & flag) == flag; + } + } + + private List attachedObjects = new List(); + + public ReadOnlyCollection AttachedObjects + { + get { return attachedObjects.AsReadOnly(); } + } + + public bool hoverLocked { get; private set; } + + private Interactable _hoveringInteractable; + + private TextMesh debugText; + private int prevOverlappingColliders = 0; + + private const int ColliderArraySize = 32; + private Collider[] overlappingColliders; + + private Player playerInstance; + + private GameObject applicationLostFocusObject; + + private SteamVR_Events.Action inputFocusAction; + + public bool isActive + { + get + { + if (trackedObject != null) + return trackedObject.isActive; + + return this.gameObject.activeInHierarchy; + } + } + + public bool isPoseValid + { + get + { + return trackedObject.isValid; + } + } + + + //------------------------------------------------- + // The Interactable object this Hand is currently hovering over + //------------------------------------------------- + public Interactable hoveringInteractable + { + get { return _hoveringInteractable; } + set + { + if (_hoveringInteractable != value) + { + if (_hoveringInteractable != null) + { + if (spewDebugText) + HandDebugLog("HoverEnd " + _hoveringInteractable.gameObject); + _hoveringInteractable.SendMessage("OnHandHoverEnd", this, SendMessageOptions.DontRequireReceiver); + + //Note: The _hoveringInteractable can change after sending the OnHandHoverEnd message so we need to check it again before broadcasting this message + if (_hoveringInteractable != null) + { + this.BroadcastMessage("OnParentHandHoverEnd", _hoveringInteractable, SendMessageOptions.DontRequireReceiver); // let objects attached to the hand know that a hover has ended + } + } + + _hoveringInteractable = value; + + if (_hoveringInteractable != null) + { + if (spewDebugText) + HandDebugLog("HoverBegin " + _hoveringInteractable.gameObject); + _hoveringInteractable.SendMessage("OnHandHoverBegin", this, SendMessageOptions.DontRequireReceiver); + + //Note: The _hoveringInteractable can change after sending the OnHandHoverBegin message so we need to check it again before broadcasting this message + if (_hoveringInteractable != null) + { + this.BroadcastMessage("OnParentHandHoverBegin", _hoveringInteractable, SendMessageOptions.DontRequireReceiver); // let objects attached to the hand know that a hover has begun + } + } + } + } + } + + + //------------------------------------------------- + // Active GameObject attached to this Hand + //------------------------------------------------- + public GameObject currentAttachedObject + { + get + { + CleanUpAttachedObjectStack(); + + if (attachedObjects.Count > 0) + { + return attachedObjects[attachedObjects.Count - 1].attachedObject; + } + + return null; + } + } + + public AttachedObject? currentAttachedObjectInfo + { + get + { + CleanUpAttachedObjectStack(); + + if (attachedObjects.Count > 0) + { + return attachedObjects[attachedObjects.Count - 1]; + } + + return null; + } + } + + public AllowTeleportWhileAttachedToHand currentAttachedTeleportManager + { + get + { + if (currentAttachedObjectInfo.HasValue) + return currentAttachedObjectInfo.Value.allowTeleportWhileAttachedToHand; + return null; + } + } + + public SteamVR_Behaviour_Skeleton skeleton + { + get + { + if (mainRenderModel != null) + return mainRenderModel.GetSkeleton(); + + return null; + } + } + + public void ShowController(bool permanent = false) + { + if (mainRenderModel != null) + mainRenderModel.SetControllerVisibility(true, permanent); + + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetControllerVisibility(true, permanent); + } + + public void HideController(bool permanent = false) + { + if (mainRenderModel != null) + mainRenderModel.SetControllerVisibility(false, permanent); + + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetControllerVisibility(false, permanent); + } + + public void ShowSkeleton(bool permanent = false) + { + if (mainRenderModel != null) + mainRenderModel.SetHandVisibility(true, permanent); + + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetHandVisibility(true, permanent); + } + + public void HideSkeleton(bool permanent = false) + { + if (mainRenderModel != null) + mainRenderModel.SetHandVisibility(false, permanent); + + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetHandVisibility(false, permanent); + } + + public bool HasSkeleton() + { + return mainRenderModel != null && mainRenderModel.GetSkeleton() != null; + } + + public void Show() + { + SetVisibility(true); + } + + public void Hide() + { + SetVisibility(false); + } + + public void SetVisibility(bool visible) + { + if (mainRenderModel != null) + mainRenderModel.SetVisibility(visible); + } + + public void SetSkeletonRangeOfMotion(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds = 0.1f) + { + for (int renderModelIndex = 0; renderModelIndex < renderModels.Count; renderModelIndex++) + { + renderModels[renderModelIndex].SetSkeletonRangeOfMotion(newRangeOfMotion, blendOverSeconds); + } + } + + public void SetTemporarySkeletonRangeOfMotion(SkeletalMotionRangeChange temporaryRangeOfMotionChange, float blendOverSeconds = 0.1f) + { + for (int renderModelIndex = 0; renderModelIndex < renderModels.Count; renderModelIndex++) + { + renderModels[renderModelIndex].SetTemporarySkeletonRangeOfMotion(temporaryRangeOfMotionChange, blendOverSeconds); + } + } + + public void ResetTemporarySkeletonRangeOfMotion(float blendOverSeconds = 0.1f) + { + for (int renderModelIndex = 0; renderModelIndex < renderModels.Count; renderModelIndex++) + { + renderModels[renderModelIndex].ResetTemporarySkeletonRangeOfMotion(blendOverSeconds); + } + } + + public void SetAnimationState(int stateValue) + { + for (int renderModelIndex = 0; renderModelIndex < renderModels.Count; renderModelIndex++) + { + renderModels[renderModelIndex].SetAnimationState(stateValue); + } + } + + public void StopAnimation() + { + for (int renderModelIndex = 0; renderModelIndex < renderModels.Count; renderModelIndex++) + { + renderModels[renderModelIndex].StopAnimation(); + } + } + + + //------------------------------------------------- + // Attach a GameObject to this GameObject + // + // objectToAttach - The GameObject to attach + // flags - The flags to use for attaching the object + // attachmentPoint - Name of the GameObject in the hierarchy of this Hand which should act as the attachment point for this GameObject + //------------------------------------------------- + public void AttachObject(GameObject objectToAttach, GrabTypes grabbedWithType, AttachmentFlags flags = defaultAttachmentFlags, Transform attachmentOffset = null) + { + AttachedObject attachedObject = new AttachedObject(); + attachedObject.attachmentFlags = flags; + attachedObject.attachedOffsetTransform = attachmentOffset; + attachedObject.attachTime = Time.time; + + if (flags == 0) + { + flags = defaultAttachmentFlags; + } + + //Make sure top object on stack is non-null + CleanUpAttachedObjectStack(); + + //Detach the object if it is already attached so that it can get re-attached at the top of the stack + if (ObjectIsAttached(objectToAttach)) + DetachObject(objectToAttach); + + //Detach from the other hand if requested + if (attachedObject.HasAttachFlag(AttachmentFlags.DetachFromOtherHand)) + { + if (otherHand != null) + otherHand.DetachObject(objectToAttach); + } + + if (attachedObject.HasAttachFlag(AttachmentFlags.DetachOthers)) + { + //Detach all the objects from the stack + while (attachedObjects.Count > 0) + { + DetachObject(attachedObjects[0].attachedObject); + } + } + + if (currentAttachedObject) + { + currentAttachedObject.SendMessage("OnHandFocusLost", this, SendMessageOptions.DontRequireReceiver); + } + + attachedObject.attachedObject = objectToAttach; + attachedObject.interactable = objectToAttach.GetComponent(); + attachedObject.allowTeleportWhileAttachedToHand = objectToAttach.GetComponent(); + attachedObject.handAttachmentPointTransform = this.transform; + + if (attachedObject.interactable != null) + { + if (attachedObject.interactable.attachEaseIn) + { + attachedObject.easeSourcePosition = attachedObject.attachedObject.transform.position; + attachedObject.easeSourceRotation = attachedObject.attachedObject.transform.rotation; + attachedObject.interactable.snapAttachEaseInCompleted = false; + } + + if (attachedObject.interactable.useHandObjectAttachmentPoint) + attachedObject.handAttachmentPointTransform = objectAttachmentPoint; + + if (attachedObject.interactable.hideHandOnAttach) + Hide(); + + if (attachedObject.interactable.hideSkeletonOnAttach && mainRenderModel != null && mainRenderModel.displayHandByDefault) + HideSkeleton(); + + if (attachedObject.interactable.hideControllerOnAttach && mainRenderModel != null && mainRenderModel.displayControllerByDefault) + HideController(); + + if (attachedObject.interactable.handAnimationOnPickup != 0) + SetAnimationState(attachedObject.interactable.handAnimationOnPickup); + + if (attachedObject.interactable.setRangeOfMotionOnPickup != SkeletalMotionRangeChange.None) + SetTemporarySkeletonRangeOfMotion(attachedObject.interactable.setRangeOfMotionOnPickup); + + } + + attachedObject.originalParent = objectToAttach.transform.parent != null ? objectToAttach.transform.parent.gameObject : null; + + attachedObject.attachedRigidbody = objectToAttach.GetComponent(); + if (attachedObject.attachedRigidbody != null) + { + if (attachedObject.interactable.attachedToHand != null) //already attached to another hand + { + //if it was attached to another hand, get the flags from that hand + + for (int attachedIndex = 0; attachedIndex < attachedObject.interactable.attachedToHand.attachedObjects.Count; attachedIndex++) + { + AttachedObject attachedObjectInList = attachedObject.interactable.attachedToHand.attachedObjects[attachedIndex]; + if (attachedObjectInList.interactable == attachedObject.interactable) + { + attachedObject.attachedRigidbodyWasKinematic = attachedObjectInList.attachedRigidbodyWasKinematic; + attachedObject.attachedRigidbodyUsedGravity = attachedObjectInList.attachedRigidbodyUsedGravity; + attachedObject.originalParent = attachedObjectInList.originalParent; + } + } + } + else + { + attachedObject.attachedRigidbodyWasKinematic = attachedObject.attachedRigidbody.isKinematic; + attachedObject.attachedRigidbodyUsedGravity = attachedObject.attachedRigidbody.useGravity; + } + } + + attachedObject.grabbedWithType = grabbedWithType; + + if (attachedObject.HasAttachFlag(AttachmentFlags.ParentToHand)) + { + //Parent the object to the hand + objectToAttach.transform.parent = this.transform; + attachedObject.isParentedToHand = true; + } + else + { + attachedObject.isParentedToHand = false; + } + + if (attachedObject.HasAttachFlag(AttachmentFlags.SnapOnAttach)) + { + if (attachedObject.interactable != null && attachedObject.interactable.skeletonPoser != null && HasSkeleton()) + { + SteamVR_Skeleton_PoseSnapshot pose = attachedObject.interactable.skeletonPoser.GetBlendedPose(skeleton); + + //snap the object to the center of the attach point + objectToAttach.transform.position = this.transform.TransformPoint(pose.position); + objectToAttach.transform.rotation = this.transform.rotation * pose.rotation; + + attachedObject.initialPositionalOffset = attachedObject.handAttachmentPointTransform.InverseTransformPoint(objectToAttach.transform.position); + attachedObject.initialRotationalOffset = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * objectToAttach.transform.rotation; + } + else + { + if (attachmentOffset != null) + { + //offset the object from the hand by the positional and rotational difference between the offset transform and the attached object + Quaternion rotDiff = Quaternion.Inverse(attachmentOffset.transform.rotation) * objectToAttach.transform.rotation; + objectToAttach.transform.rotation = attachedObject.handAttachmentPointTransform.rotation * rotDiff; + + Vector3 posDiff = objectToAttach.transform.position - attachmentOffset.transform.position; + objectToAttach.transform.position = attachedObject.handAttachmentPointTransform.position + posDiff; + } + else + { + //snap the object to the center of the attach point + objectToAttach.transform.rotation = attachedObject.handAttachmentPointTransform.rotation; + objectToAttach.transform.position = attachedObject.handAttachmentPointTransform.position; + } + + Transform followPoint = objectToAttach.transform; + + attachedObject.initialPositionalOffset = attachedObject.handAttachmentPointTransform.InverseTransformPoint(followPoint.position); + attachedObject.initialRotationalOffset = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * followPoint.rotation; + } + } + else + { + if (attachedObject.interactable != null && attachedObject.interactable.skeletonPoser != null && HasSkeleton()) + { + attachedObject.initialPositionalOffset = attachedObject.handAttachmentPointTransform.InverseTransformPoint(objectToAttach.transform.position); + attachedObject.initialRotationalOffset = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * objectToAttach.transform.rotation; + } + else + { + if (attachmentOffset != null) + { + //get the initial positional and rotational offsets between the hand and the offset transform + Quaternion rotDiff = Quaternion.Inverse(attachmentOffset.transform.rotation) * objectToAttach.transform.rotation; + Quaternion targetRotation = attachedObject.handAttachmentPointTransform.rotation * rotDiff; + Quaternion rotationPositionBy = targetRotation * Quaternion.Inverse(objectToAttach.transform.rotation); + + Vector3 posDiff = (rotationPositionBy * objectToAttach.transform.position) - (rotationPositionBy * attachmentOffset.transform.position); + + attachedObject.initialPositionalOffset = attachedObject.handAttachmentPointTransform.InverseTransformPoint(attachedObject.handAttachmentPointTransform.position + posDiff); + attachedObject.initialRotationalOffset = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * (attachedObject.handAttachmentPointTransform.rotation * rotDiff); + } + else + { + attachedObject.initialPositionalOffset = attachedObject.handAttachmentPointTransform.InverseTransformPoint(objectToAttach.transform.position); + attachedObject.initialRotationalOffset = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * objectToAttach.transform.rotation; + } + } + } + + + + if (attachedObject.HasAttachFlag(AttachmentFlags.TurnOnKinematic)) + { + if (attachedObject.attachedRigidbody != null) + { + attachedObject.collisionDetectionMode = attachedObject.attachedRigidbody.collisionDetectionMode; + if (attachedObject.collisionDetectionMode == CollisionDetectionMode.Continuous) + attachedObject.attachedRigidbody.collisionDetectionMode = CollisionDetectionMode.Discrete; + + attachedObject.attachedRigidbody.isKinematic = true; + } + } + + if (attachedObject.HasAttachFlag(AttachmentFlags.TurnOffGravity)) + { + if (attachedObject.attachedRigidbody != null) + { + attachedObject.attachedRigidbody.useGravity = false; + } + } + + if (attachedObject.interactable != null && attachedObject.interactable.attachEaseIn) + { + attachedObject.attachedObject.transform.position = attachedObject.easeSourcePosition; + attachedObject.attachedObject.transform.rotation = attachedObject.easeSourceRotation; + } + + attachedObjects.Add(attachedObject); + + UpdateHovering(); + + if (spewDebugText) + HandDebugLog("AttachObject " + objectToAttach); + objectToAttach.SendMessage("OnAttachedToHand", this, SendMessageOptions.DontRequireReceiver); + } + + public bool ObjectIsAttached(GameObject go) + { + for (int attachedIndex = 0; attachedIndex < attachedObjects.Count; attachedIndex++) + { + if (attachedObjects[attachedIndex].attachedObject == go) + return true; + } + + return false; + } + + public void ForceHoverUnlock() + { + hoverLocked = false; + } + + //------------------------------------------------- + // Detach this GameObject from the attached object stack of this Hand + // + // objectToDetach - The GameObject to detach from this Hand + //------------------------------------------------- + public void DetachObject(GameObject objectToDetach, bool restoreOriginalParent = true) + { + int index = attachedObjects.FindIndex(l => l.attachedObject == objectToDetach); + if (index != -1) + { + if (spewDebugText) + HandDebugLog("DetachObject " + objectToDetach); + + GameObject prevTopObject = currentAttachedObject; + + + if (attachedObjects[index].interactable != null) + { + if (attachedObjects[index].interactable.hideHandOnAttach) + Show(); + + if (attachedObjects[index].interactable.hideSkeletonOnAttach && mainRenderModel != null && mainRenderModel.displayHandByDefault) + ShowSkeleton(); + + if (attachedObjects[index].interactable.hideControllerOnAttach && mainRenderModel != null && mainRenderModel.displayControllerByDefault) + ShowController(); + + if (attachedObjects[index].interactable.handAnimationOnPickup != 0) + StopAnimation(); + + if (attachedObjects[index].interactable.setRangeOfMotionOnPickup != SkeletalMotionRangeChange.None) + ResetTemporarySkeletonRangeOfMotion(); + } + + Transform parentTransform = null; + if (attachedObjects[index].isParentedToHand) + { + if (restoreOriginalParent && (attachedObjects[index].originalParent != null)) + { + parentTransform = attachedObjects[index].originalParent.transform; + } + + if (attachedObjects[index].attachedObject != null) + { + attachedObjects[index].attachedObject.transform.parent = parentTransform; + } + } + + if (attachedObjects[index].HasAttachFlag(AttachmentFlags.TurnOnKinematic)) + { + if (attachedObjects[index].attachedRigidbody != null) + { + attachedObjects[index].attachedRigidbody.isKinematic = attachedObjects[index].attachedRigidbodyWasKinematic; + attachedObjects[index].attachedRigidbody.collisionDetectionMode = attachedObjects[index].collisionDetectionMode; + } + } + + if (attachedObjects[index].HasAttachFlag(AttachmentFlags.TurnOffGravity)) + { + if (attachedObjects[index].attachedObject != null) + { + if (attachedObjects[index].attachedRigidbody != null) + attachedObjects[index].attachedRigidbody.useGravity = attachedObjects[index].attachedRigidbodyUsedGravity; + } + } + + if (attachedObjects[index].interactable != null && attachedObjects[index].interactable.handFollowTransform && HasSkeleton()) + { + skeleton.transform.localPosition = Vector3.zero; + skeleton.transform.localRotation = Quaternion.identity; + } + + if (attachedObjects[index].attachedObject != null) + { + if (attachedObjects[index].interactable == null || (attachedObjects[index].interactable != null && attachedObjects[index].interactable.isDestroying == false)) + attachedObjects[index].attachedObject.SetActive(true); + + attachedObjects[index].attachedObject.SendMessage("OnDetachedFromHand", this, SendMessageOptions.DontRequireReceiver); + } + + attachedObjects.RemoveAt(index); + + CleanUpAttachedObjectStack(); + + GameObject newTopObject = currentAttachedObject; + + hoverLocked = false; + + + //Give focus to the top most object on the stack if it changed + if (newTopObject != null && newTopObject != prevTopObject) + { + newTopObject.SetActive(true); + newTopObject.SendMessage("OnHandFocusAcquired", this, SendMessageOptions.DontRequireReceiver); + } + } + + CleanUpAttachedObjectStack(); + + if (mainRenderModel != null) + mainRenderModel.MatchHandToTransform(mainRenderModel.transform); + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.MatchHandToTransform(hoverhighlightRenderModel.transform); + } + + + //------------------------------------------------- + // Get the world velocity of the VR Hand. + //------------------------------------------------- + public Vector3 GetTrackedObjectVelocity(float timeOffset = 0) + { + if (trackedObject == null) + { + Vector3 velocityTarget, angularTarget; + GetUpdatedAttachedVelocities(currentAttachedObjectInfo.Value, out velocityTarget, out angularTarget); + return velocityTarget; + } + + if (isActive) + { + if (timeOffset == 0) + return Player.instance.trackingOriginTransform.TransformVector(trackedObject.GetVelocity()); + else + { + Vector3 velocity; + Vector3 angularVelocity; + + trackedObject.GetVelocitiesAtTimeOffset(timeOffset, out velocity, out angularVelocity); + return Player.instance.trackingOriginTransform.TransformVector(velocity); + } + } + + return Vector3.zero; + } + + + //------------------------------------------------- + // Get the world space angular velocity of the VR Hand. + //------------------------------------------------- + public Vector3 GetTrackedObjectAngularVelocity(float timeOffset = 0) + { + if (trackedObject == null) + { + Vector3 velocityTarget, angularTarget; + GetUpdatedAttachedVelocities(currentAttachedObjectInfo.Value, out velocityTarget, out angularTarget); + return angularTarget; + } + + if (isActive) + { + if (timeOffset == 0) + return Player.instance.trackingOriginTransform.TransformDirection(trackedObject.GetAngularVelocity()); + else + { + Vector3 velocity; + Vector3 angularVelocity; + + trackedObject.GetVelocitiesAtTimeOffset(timeOffset, out velocity, out angularVelocity); + return Player.instance.trackingOriginTransform.TransformDirection(angularVelocity); + } + } + + return Vector3.zero; + } + + public void GetEstimatedPeakVelocities(out Vector3 velocity, out Vector3 angularVelocity) + { + trackedObject.GetEstimatedPeakVelocities(out velocity, out angularVelocity); + velocity = Player.instance.trackingOriginTransform.TransformVector(velocity); + angularVelocity = Player.instance.trackingOriginTransform.TransformDirection(angularVelocity); + } + + + //------------------------------------------------- + private void CleanUpAttachedObjectStack() + { + attachedObjects.RemoveAll(l => l.attachedObject == null); + } + + + //------------------------------------------------- + protected virtual void Awake() + { + inputFocusAction = SteamVR_Events.InputFocusAction(OnInputFocus); + + if (hoverSphereTransform == null) + hoverSphereTransform = this.transform; + + if (objectAttachmentPoint == null) + objectAttachmentPoint = this.transform; + + applicationLostFocusObject = new GameObject("_application_lost_focus"); + applicationLostFocusObject.transform.parent = transform; + applicationLostFocusObject.SetActive(false); + + if (trackedObject == null) + { + trackedObject = this.gameObject.GetComponent(); + + if (trackedObject != null) + trackedObject.onTransformUpdatedEvent += OnTransformUpdated; + } + } + + protected virtual void OnDestroy() + { + if (trackedObject != null) + { + trackedObject.onTransformUpdatedEvent -= OnTransformUpdated; + } + } + + protected virtual void OnTransformUpdated(SteamVR_Behaviour_Pose updatedPose, SteamVR_Input_Sources updatedSource) + { + HandFollowUpdate(); + } + + //------------------------------------------------- + protected virtual IEnumerator Start() + { + // save off player instance + playerInstance = Player.instance; + if (!playerInstance) + { + Debug.LogError("[SteamVR Interaction] No player instance found in Hand Start()", this); + } + + if (this.gameObject.layer == 0) + Debug.LogWarning("[SteamVR Interaction] Hand is on default layer. This puts unnecessary strain on hover checks as it is always true for hand colliders (which are then ignored).", this); + else + hoverLayerMask &= ~(1 << this.gameObject.layer); //ignore self for hovering + + // allocate array for colliders + overlappingColliders = new Collider[ColliderArraySize]; + + // We are a "no SteamVR fallback hand" if we have this camera set + // we'll use the right mouse to look around and left mouse to interact + // - don't need to find the device + if (noSteamVRFallbackCamera) + { + yield break; + } + + //Debug.Log( "[SteamVR Interaction] Hand - initializing connection routine" ); + + while (true) + { + if (isPoseValid) + { + InitController(); + break; + } + + yield return null; + } + } + + + //------------------------------------------------- + protected virtual void UpdateHovering() + { + if ((noSteamVRFallbackCamera == null) && (isActive == false)) + { + return; + } + + if (hoverLocked) + return; + + if (applicationLostFocusObject.activeSelf) + return; + + float closestDistance = float.MaxValue; + Interactable closestInteractable = null; + + if (useHoverSphere) + { + float scaledHoverRadius = hoverSphereRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(hoverSphereTransform)); + CheckHoveringForTransform(hoverSphereTransform.position, scaledHoverRadius, ref closestDistance, ref closestInteractable, Color.green); + } + + if (useControllerHoverComponent && mainRenderModel != null && mainRenderModel.IsControllerVisibile()) + { + float scaledHoverRadius = controllerHoverRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(this.transform)); + CheckHoveringForTransform(mainRenderModel.GetControllerPosition(controllerHoverComponent), scaledHoverRadius / 2f, ref closestDistance, ref closestInteractable, Color.blue); + } + + if (useFingerJointHover && mainRenderModel != null && mainRenderModel.IsHandVisibile()) + { + float scaledHoverRadius = fingerJointHoverRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(this.transform)); + CheckHoveringForTransform(mainRenderModel.GetBonePosition((int)fingerJointHover), scaledHoverRadius / 2f, ref closestDistance, ref closestInteractable, Color.yellow); + } + + // Hover on this one + hoveringInteractable = closestInteractable; + } + + protected virtual bool CheckHoveringForTransform(Vector3 hoverPosition, float hoverRadius, ref float closestDistance, ref Interactable closestInteractable, Color debugColor) + { + bool foundCloser = false; + + // null out old vals + for (int i = 0; i < overlappingColliders.Length; ++i) + { + overlappingColliders[i] = null; + } + + int numColliding = Physics.OverlapSphereNonAlloc(hoverPosition, hoverRadius, overlappingColliders, hoverLayerMask.value); + + if (numColliding >= ColliderArraySize) + Debug.LogWarning("[SteamVR Interaction] This hand is overlapping the max number of colliders: " + ColliderArraySize + ". Some collisions may be missed. Increase ColliderArraySize on Hand.cs"); + + // DebugVar + int iActualColliderCount = 0; + + // Pick the closest hovering + for (int colliderIndex = 0; colliderIndex < overlappingColliders.Length; colliderIndex++) + { + Collider collider = overlappingColliders[colliderIndex]; + + if (collider == null) + continue; + + Interactable contacting = collider.GetComponentInParent(); + + // Yeah, it's null, skip + if (contacting == null) + continue; + + // Ignore this collider for hovering + IgnoreHovering ignore = collider.GetComponent(); + if (ignore != null) + { + if (ignore.onlyIgnoreHand == null || ignore.onlyIgnoreHand == this) + { + continue; + } + } + + // Can't hover over the object if it's attached + bool hoveringOverAttached = false; + for (int attachedIndex = 0; attachedIndex < attachedObjects.Count; attachedIndex++) + { + if (attachedObjects[attachedIndex].attachedObject == contacting.gameObject) + { + hoveringOverAttached = true; + break; + } + } + + if (hoveringOverAttached) + continue; + + // Best candidate so far... + float distance = Vector3.Distance(contacting.transform.position, hoverPosition); + //float distance = Vector3.Distance(collider.bounds.center, hoverPosition); + bool lowerPriority = false; + if (closestInteractable != null) + { // compare to closest interactable to check priority + lowerPriority = contacting.hoverPriority < closestInteractable.hoverPriority; + } + bool isCloser = (distance < closestDistance); + if (isCloser && !lowerPriority) + { + closestDistance = distance; + closestInteractable = contacting; + foundCloser = true; + } + iActualColliderCount++; + } + + if (showDebugInteractables && foundCloser) + { + Debug.DrawLine(hoverPosition, closestInteractable.transform.position, debugColor, .05f, false); + } + + if (iActualColliderCount > 0 && iActualColliderCount != prevOverlappingColliders) + { + prevOverlappingColliders = iActualColliderCount; + + if (spewDebugText) + HandDebugLog("Found " + iActualColliderCount + " overlapping colliders."); + } + + return foundCloser; + } + + + //------------------------------------------------- + protected virtual void UpdateNoSteamVRFallback() + { + if (noSteamVRFallbackCamera) + { + Ray ray = noSteamVRFallbackCamera.ScreenPointToRay(Input.mousePosition); + + if (attachedObjects.Count > 0) + { + // Holding down the mouse: + // move around a fixed distance from the camera + transform.position = ray.origin + noSteamVRFallbackInteractorDistance * ray.direction; + } + else + { + // Not holding down the mouse: + // cast out a ray to see what we should mouse over + + // Don't want to hit the hand and anything underneath it + // So move it back behind the camera when we do the raycast + Vector3 oldPosition = transform.position; + transform.position = noSteamVRFallbackCamera.transform.forward * (-1000.0f); + + RaycastHit raycastHit; + if (Physics.Raycast(ray, out raycastHit, noSteamVRFallbackMaxDistanceNoItem)) + { + transform.position = raycastHit.point; + + // Remember this distance in case we click and drag the mouse + noSteamVRFallbackInteractorDistance = Mathf.Min(noSteamVRFallbackMaxDistanceNoItem, raycastHit.distance); + } + else if (noSteamVRFallbackInteractorDistance > 0.0f) + { + // Move it around at the distance we last had a hit + transform.position = ray.origin + Mathf.Min(noSteamVRFallbackMaxDistanceNoItem, noSteamVRFallbackInteractorDistance) * ray.direction; + } + else + { + // Didn't hit, just leave it where it was + transform.position = oldPosition; + } + } + } + } + + + //------------------------------------------------- + private void UpdateDebugText() + { + if (showDebugText) + { + if (debugText == null) + { + debugText = new GameObject("_debug_text").AddComponent(); + debugText.fontSize = 120; + debugText.characterSize = 0.001f; + debugText.transform.parent = transform; + + debugText.transform.localRotation = Quaternion.Euler(90.0f, 0.0f, 0.0f); + } + + if (handType == SteamVR_Input_Sources.RightHand) + { + debugText.transform.localPosition = new Vector3(-0.05f, 0.0f, 0.0f); + debugText.alignment = TextAlignment.Right; + debugText.anchor = TextAnchor.UpperRight; + } + else + { + debugText.transform.localPosition = new Vector3(0.05f, 0.0f, 0.0f); + debugText.alignment = TextAlignment.Left; + debugText.anchor = TextAnchor.UpperLeft; + } + + debugText.text = string.Format( + "Hovering: {0}\n" + + "Hover Lock: {1}\n" + + "Attached: {2}\n" + + "Total Attached: {3}\n" + + "Type: {4}\n", + (hoveringInteractable ? hoveringInteractable.gameObject.name : "null"), + hoverLocked, + (currentAttachedObject ? currentAttachedObject.name : "null"), + attachedObjects.Count, + handType.ToString()); + } + else + { + if (debugText != null) + { + Destroy(debugText.gameObject); + } + } + } + + + //------------------------------------------------- + protected virtual void OnEnable() + { + inputFocusAction.enabled = true; + + // Stagger updates between hands + float hoverUpdateBegin = ((otherHand != null) && (otherHand.GetInstanceID() < GetInstanceID())) ? (0.5f * hoverUpdateInterval) : (0.0f); + InvokeRepeating("UpdateHovering", hoverUpdateBegin, hoverUpdateInterval); + InvokeRepeating("UpdateDebugText", hoverUpdateBegin, hoverUpdateInterval); + } + + + //------------------------------------------------- + protected virtual void OnDisable() + { + inputFocusAction.enabled = false; + + CancelInvoke(); + } + + + //------------------------------------------------- + protected virtual void Update() + { + UpdateNoSteamVRFallback(); + + GameObject attachedObject = currentAttachedObject; + if (attachedObject != null) + { + attachedObject.SendMessage("HandAttachedUpdate", this, SendMessageOptions.DontRequireReceiver); + } + + if (hoveringInteractable) + { + hoveringInteractable.SendMessage("HandHoverUpdate", this, SendMessageOptions.DontRequireReceiver); + } + } + + /// + /// Returns true when the hand is currently hovering over the interactable passed in + /// + public bool IsStillHovering(Interactable interactable) + { + return hoveringInteractable == interactable; + } + + protected virtual void HandFollowUpdate() + { + GameObject attachedObject = currentAttachedObject; + if (attachedObject != null) + { + if (currentAttachedObjectInfo.Value.interactable != null) + { + SteamVR_Skeleton_PoseSnapshot pose = null; + + if (currentAttachedObjectInfo.Value.interactable.skeletonPoser != null && HasSkeleton()) + { + pose = currentAttachedObjectInfo.Value.interactable.skeletonPoser.GetBlendedPose(skeleton); + } + + if (currentAttachedObjectInfo.Value.interactable.handFollowTransform) + { + Quaternion targetHandRotation; + Vector3 targetHandPosition; + + if (pose == null) + { + Quaternion offset = Quaternion.Inverse(this.transform.rotation) * currentAttachedObjectInfo.Value.handAttachmentPointTransform.rotation; + targetHandRotation = currentAttachedObjectInfo.Value.interactable.transform.rotation * Quaternion.Inverse(offset); + + Vector3 worldOffset = (this.transform.position - currentAttachedObjectInfo.Value.handAttachmentPointTransform.position); + Quaternion rotationDiff = mainRenderModel.GetHandRotation() * Quaternion.Inverse(this.transform.rotation); + Vector3 localOffset = rotationDiff * worldOffset; + targetHandPosition = currentAttachedObjectInfo.Value.interactable.transform.position + localOffset; + } + else + { + Transform objectT = currentAttachedObjectInfo.Value.attachedObject.transform; + Vector3 oldItemPos = objectT.position; + Quaternion oldItemRot = objectT.transform.rotation; + objectT.position = TargetItemPosition(currentAttachedObjectInfo.Value); + objectT.rotation = TargetItemRotation(currentAttachedObjectInfo.Value); + Vector3 localSkelePos = objectT.InverseTransformPoint(transform.position); + Quaternion localSkeleRot = Quaternion.Inverse(objectT.rotation) * transform.rotation; + objectT.position = oldItemPos; + objectT.rotation = oldItemRot; + + targetHandPosition = objectT.TransformPoint(localSkelePos); + targetHandRotation = objectT.rotation * localSkeleRot; + } + + if (mainRenderModel != null) + mainRenderModel.SetHandRotation(targetHandRotation); + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetHandRotation(targetHandRotation); + + if (mainRenderModel != null) + mainRenderModel.SetHandPosition(targetHandPosition); + if (hoverhighlightRenderModel != null) + hoverhighlightRenderModel.SetHandPosition(targetHandPosition); + } + } + } + } + + protected virtual void FixedUpdate() + { + if (currentAttachedObject != null) + { + AttachedObject attachedInfo = currentAttachedObjectInfo.Value; + if (attachedInfo.attachedObject != null) + { + if (attachedInfo.HasAttachFlag(AttachmentFlags.VelocityMovement)) + { + if (attachedInfo.interactable.attachEaseIn == false || attachedInfo.interactable.snapAttachEaseInCompleted) + UpdateAttachedVelocity(attachedInfo); + + /*if (attachedInfo.interactable.handFollowTransformPosition) + { + skeleton.transform.position = TargetSkeletonPosition(attachedInfo); + skeleton.transform.rotation = attachedInfo.attachedObject.transform.rotation * attachedInfo.skeletonLockRotation; + }*/ + } + else + { + if (attachedInfo.HasAttachFlag(AttachmentFlags.ParentToHand)) + { + attachedInfo.attachedObject.transform.position = TargetItemPosition(attachedInfo); + attachedInfo.attachedObject.transform.rotation = TargetItemRotation(attachedInfo); + } + } + + + if (attachedInfo.interactable.attachEaseIn) + { + float t = Util.RemapNumberClamped(Time.time, attachedInfo.attachTime, attachedInfo.attachTime + attachedInfo.interactable.snapAttachEaseInTime, 0.0f, 1.0f); + if (t < 1.0f) + { + if (attachedInfo.HasAttachFlag(AttachmentFlags.VelocityMovement)) + { + attachedInfo.attachedRigidbody.velocity = Vector3.zero; + attachedInfo.attachedRigidbody.angularVelocity = Vector3.zero; + } + t = attachedInfo.interactable.snapAttachEaseInCurve.Evaluate(t); + attachedInfo.attachedObject.transform.position = Vector3.Lerp(attachedInfo.easeSourcePosition, TargetItemPosition(attachedInfo), t); + attachedInfo.attachedObject.transform.rotation = Quaternion.Lerp(attachedInfo.easeSourceRotation, TargetItemRotation(attachedInfo), t); + } + else if (!attachedInfo.interactable.snapAttachEaseInCompleted) + { + attachedInfo.interactable.gameObject.SendMessage("OnThrowableAttachEaseInCompleted", this, SendMessageOptions.DontRequireReceiver); + attachedInfo.interactable.snapAttachEaseInCompleted = true; + } + } + } + } + } + + protected const float MaxVelocityChange = 10f; + protected const float VelocityMagic = 6000f; + protected const float AngularVelocityMagic = 50f; + protected const float MaxAngularVelocityChange = 20f; + + protected void UpdateAttachedVelocity(AttachedObject attachedObjectInfo) + { + Vector3 velocityTarget, angularTarget; + bool success = GetUpdatedAttachedVelocities(attachedObjectInfo, out velocityTarget, out angularTarget); + if (success) + { + float scale = SteamVR_Utils.GetLossyScale(currentAttachedObjectInfo.Value.handAttachmentPointTransform); + float maxAngularVelocityChange = MaxAngularVelocityChange * scale; + float maxVelocityChange = MaxVelocityChange * scale; + + attachedObjectInfo.attachedRigidbody.velocity = Vector3.MoveTowards(attachedObjectInfo.attachedRigidbody.velocity, velocityTarget, maxVelocityChange); + attachedObjectInfo.attachedRigidbody.angularVelocity = Vector3.MoveTowards(attachedObjectInfo.attachedRigidbody.angularVelocity, angularTarget, maxAngularVelocityChange); + } + } + + /// + /// Snap an attached object to its target position and rotation. Good for error correction. + /// + public void ResetAttachedTransform(AttachedObject attachedObject) + { + attachedObject.attachedObject.transform.position = TargetItemPosition(attachedObject); + attachedObject.attachedObject.transform.rotation = TargetItemRotation(attachedObject); + } + + protected Vector3 TargetItemPosition(AttachedObject attachedObject) + { + if (attachedObject.interactable != null && attachedObject.interactable.skeletonPoser != null && HasSkeleton()) + { + Vector3 tp = attachedObject.handAttachmentPointTransform.InverseTransformPoint(transform.TransformPoint(attachedObject.interactable.skeletonPoser.GetBlendedPose(skeleton).position)); + //tp.x *= -1; + return currentAttachedObjectInfo.Value.handAttachmentPointTransform.TransformPoint(tp); + } + else + { + return currentAttachedObjectInfo.Value.handAttachmentPointTransform.TransformPoint(attachedObject.initialPositionalOffset); + } + } + + protected Quaternion TargetItemRotation(AttachedObject attachedObject) + { + if (attachedObject.interactable != null && attachedObject.interactable.skeletonPoser != null && HasSkeleton()) + { + Quaternion tr = Quaternion.Inverse(attachedObject.handAttachmentPointTransform.rotation) * (transform.rotation * attachedObject.interactable.skeletonPoser.GetBlendedPose(skeleton).rotation); + return currentAttachedObjectInfo.Value.handAttachmentPointTransform.rotation * tr; + } + else + { + return currentAttachedObjectInfo.Value.handAttachmentPointTransform.rotation * attachedObject.initialRotationalOffset; + } + } + + protected bool GetUpdatedAttachedVelocities(AttachedObject attachedObjectInfo, out Vector3 velocityTarget, out Vector3 angularTarget) + { + bool realNumbers = false; + + + float velocityMagic = VelocityMagic; + float angularVelocityMagic = AngularVelocityMagic; + + Vector3 targetItemPosition = TargetItemPosition(attachedObjectInfo); + Vector3 positionDelta = (targetItemPosition - attachedObjectInfo.attachedRigidbody.position); + velocityTarget = (positionDelta * velocityMagic * Time.deltaTime); + + if (float.IsNaN(velocityTarget.x) == false && float.IsInfinity(velocityTarget.x) == false) + { + if (noSteamVRFallbackCamera) + velocityTarget /= 10; //hacky fix for fallback + + realNumbers = true; + } + else + velocityTarget = Vector3.zero; + + + Quaternion targetItemRotation = TargetItemRotation(attachedObjectInfo); + Quaternion rotationDelta = targetItemRotation * Quaternion.Inverse(attachedObjectInfo.attachedObject.transform.rotation); + + + float angle; + Vector3 axis; + rotationDelta.ToAngleAxis(out angle, out axis); + + if (angle > 180) + angle -= 360; + + if (angle != 0 && float.IsNaN(axis.x) == false && float.IsInfinity(axis.x) == false) + { + angularTarget = angle * axis * angularVelocityMagic * Time.deltaTime; + + if (noSteamVRFallbackCamera) + angularTarget /= 10; //hacky fix for fallback + + realNumbers &= true; + } + else + angularTarget = Vector3.zero; + + return realNumbers; + } + + + //------------------------------------------------- + protected virtual void OnInputFocus(bool hasFocus) + { + if (hasFocus) + { + DetachObject(applicationLostFocusObject, true); + applicationLostFocusObject.SetActive(false); + UpdateHovering(); + BroadcastMessage("OnParentHandInputFocusAcquired", SendMessageOptions.DontRequireReceiver); + } + else + { + applicationLostFocusObject.SetActive(true); + AttachObject(applicationLostFocusObject, GrabTypes.Scripted, AttachmentFlags.ParentToHand); + BroadcastMessage("OnParentHandInputFocusLost", SendMessageOptions.DontRequireReceiver); + } + } + + //------------------------------------------------- + protected virtual void OnDrawGizmos() + { + if (useHoverSphere && hoverSphereTransform != null) + { + Gizmos.color = Color.green; + float scaledHoverRadius = hoverSphereRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(hoverSphereTransform)); + Gizmos.DrawWireSphere(hoverSphereTransform.position, scaledHoverRadius / 2); + } + + if (useControllerHoverComponent && mainRenderModel != null && mainRenderModel.IsControllerVisibile()) + { + Gizmos.color = Color.blue; + float scaledHoverRadius = controllerHoverRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(this.transform)); + Gizmos.DrawWireSphere(mainRenderModel.GetControllerPosition(controllerHoverComponent), scaledHoverRadius / 2); + } + + if (useFingerJointHover && mainRenderModel != null && mainRenderModel.IsHandVisibile()) + { + Gizmos.color = Color.yellow; + float scaledHoverRadius = fingerJointHoverRadius * Mathf.Abs(SteamVR_Utils.GetLossyScale(this.transform)); + Gizmos.DrawWireSphere(mainRenderModel.GetBonePosition((int)fingerJointHover), scaledHoverRadius / 2); + } + } + + + //------------------------------------------------- + private void HandDebugLog(string msg) + { + if (spewDebugText) + { + Debug.Log("[SteamVR Interaction] Hand (" + this.name + "): " + msg); + } + } + + + //------------------------------------------------- + // Continue to hover over this object indefinitely, whether or not the Hand moves out of its interaction trigger volume. + // + // interactable - The Interactable to hover over indefinitely. + //------------------------------------------------- + public void HoverLock(Interactable interactable) + { + if (spewDebugText) + HandDebugLog("HoverLock " + interactable); + hoverLocked = true; + hoveringInteractable = interactable; + } + + + //------------------------------------------------- + // Stop hovering over this object indefinitely. + // + // interactable - The hover-locked Interactable to stop hovering over indefinitely. + //------------------------------------------------- + public void HoverUnlock(Interactable interactable) + { + if (spewDebugText) + HandDebugLog("HoverUnlock " + interactable); + + if (hoveringInteractable == interactable) + { + hoverLocked = false; + } + } + + public void TriggerHapticPulse(ushort microSecondsDuration) + { + float seconds = (float)microSecondsDuration / 1000000f; + hapticAction.Execute(0, seconds, 1f / seconds, 1, handType); + } + + public void TriggerHapticPulse(float duration, float frequency, float amplitude) + { + hapticAction.Execute(0, duration, frequency, amplitude, handType); + } + + public void ShowGrabHint() + { + ControllerButtonHints.ShowButtonHint(this, grabGripAction); //todo: assess + } + + public void HideGrabHint() + { + ControllerButtonHints.HideButtonHint(this, grabGripAction); //todo: assess + } + + public void ShowGrabHint(string text) + { + ControllerButtonHints.ShowTextHint(this, grabGripAction, text); + } + + public GrabTypes GetGrabStarting(GrabTypes explicitType = GrabTypes.None) + { + if (explicitType != GrabTypes.None) + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButtonDown(0)) + return explicitType; + else + return GrabTypes.None; + } + + if (explicitType == GrabTypes.Pinch && grabPinchAction.GetStateDown(handType)) + return GrabTypes.Pinch; + if (explicitType == GrabTypes.Grip && grabGripAction.GetStateDown(handType)) + return GrabTypes.Grip; + } + else + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButtonDown(0)) + return GrabTypes.Grip; + else + return GrabTypes.None; + } + + if (grabPinchAction != null && grabPinchAction.GetStateDown(handType)) + return GrabTypes.Pinch; + if (grabGripAction != null && grabGripAction.GetStateDown(handType)) + return GrabTypes.Grip; + } + + return GrabTypes.None; + } + + public GrabTypes GetGrabEnding(GrabTypes explicitType = GrabTypes.None) + { + if (explicitType != GrabTypes.None) + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButtonUp(0)) + return explicitType; + else + return GrabTypes.None; + } + + if (explicitType == GrabTypes.Pinch && grabPinchAction.GetStateUp(handType)) + return GrabTypes.Pinch; + if (explicitType == GrabTypes.Grip && grabGripAction.GetStateUp(handType)) + return GrabTypes.Grip; + } + else + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButtonUp(0)) + return GrabTypes.Grip; + else + return GrabTypes.None; + } + + if (grabPinchAction.GetStateUp(handType)) + return GrabTypes.Pinch; + if (grabGripAction.GetStateUp(handType)) + return GrabTypes.Grip; + } + + return GrabTypes.None; + } + + public bool IsGrabEnding(GameObject attachedObject) + { + for (int attachedObjectIndex = 0; attachedObjectIndex < attachedObjects.Count; attachedObjectIndex++) + { + if (attachedObjects[attachedObjectIndex].attachedObject == attachedObject) + { + return IsGrabbingWithType(attachedObjects[attachedObjectIndex].grabbedWithType) == false; + } + } + + return false; + } + + public bool IsGrabbingWithType(GrabTypes type) + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButton(0)) + return true; + else + return false; + } + + switch (type) + { + case GrabTypes.Pinch: + return grabPinchAction.GetState(handType); + + case GrabTypes.Grip: + return grabGripAction.GetState(handType); + + default: + return false; + } + } + + public bool IsGrabbingWithOppositeType(GrabTypes type) + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButton(0)) + return true; + else + return false; + } + + switch (type) + { + case GrabTypes.Pinch: + return grabGripAction.GetState(handType); + + case GrabTypes.Grip: + return grabPinchAction.GetState(handType); + + default: + return false; + } + } + + public GrabTypes GetBestGrabbingType() + { + return GetBestGrabbingType(GrabTypes.None); + } + + public GrabTypes GetBestGrabbingType(GrabTypes preferred, bool forcePreference = false) + { + if (noSteamVRFallbackCamera) + { + if (Input.GetMouseButton(0)) + return preferred; + else + return GrabTypes.None; + } + + if (preferred == GrabTypes.Pinch) + { + if (grabPinchAction.GetState(handType)) + return GrabTypes.Pinch; + else if (forcePreference) + return GrabTypes.None; + } + if (preferred == GrabTypes.Grip) + { + if (grabGripAction.GetState(handType)) + return GrabTypes.Grip; + else if (forcePreference) + return GrabTypes.None; + } + + if (grabPinchAction.GetState(handType)) + return GrabTypes.Pinch; + if (grabGripAction.GetState(handType)) + return GrabTypes.Grip; + + return GrabTypes.None; + } + + + //------------------------------------------------- + private void InitController() + { + if (spewDebugText) + HandDebugLog("Hand " + name + " connected with type " + handType.ToString()); + + bool hadOldRendermodel = mainRenderModel != null; + EVRSkeletalMotionRange oldRM_rom = EVRSkeletalMotionRange.WithController; + if (hadOldRendermodel) + oldRM_rom = mainRenderModel.GetSkeletonRangeOfMotion; + + + foreach (RenderModel r in renderModels) + { + if (r != null) + Destroy(r.gameObject); + } + + renderModels.Clear(); + + GameObject renderModelInstance = GameObject.Instantiate(renderModelPrefab); + renderModelInstance.layer = gameObject.layer; + renderModelInstance.tag = gameObject.tag; + renderModelInstance.transform.parent = this.transform; + renderModelInstance.transform.localPosition = Vector3.zero; + renderModelInstance.transform.localRotation = Quaternion.identity; + renderModelInstance.transform.localScale = renderModelPrefab.transform.localScale; + + //TriggerHapticPulse(800); //pulse on controller init + + int deviceIndex = trackedObject.GetDeviceIndex(); + + mainRenderModel = renderModelInstance.GetComponent(); + renderModels.Add(mainRenderModel); + + if (hadOldRendermodel) + mainRenderModel.SetSkeletonRangeOfMotion(oldRM_rom); + + this.BroadcastMessage("SetInputSource", handType, SendMessageOptions.DontRequireReceiver); // let child objects know we've initialized + this.BroadcastMessage("OnHandInitialized", deviceIndex, SendMessageOptions.DontRequireReceiver); // let child objects know we've initialized + } + + public void SetRenderModel(GameObject prefab) + { + renderModelPrefab = prefab; + + if (mainRenderModel != null && isPoseValid) + InitController(); + } + + public void SetHoverRenderModel(RenderModel hoverRenderModel) + { + hoverhighlightRenderModel = hoverRenderModel; + renderModels.Add(hoverRenderModel); + } + + public int GetDeviceIndex() + { + return trackedObject.GetDeviceIndex(); + } + } + + + [System.Serializable] + public class HandEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta new file mode 100644 index 00000000..b4c7518f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 29e3e4511966ba94d8ba0b98c6c62f82 +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs new file mode 100644 index 00000000..f292ac96 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs @@ -0,0 +1,284 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Valve.VR.InteractionSystem +{ + public class HandCollider : MonoBehaviour + { + private new Rigidbody rigidbody; + [HideInInspector] + public HandPhysics hand; + + public LayerMask collisionMask; + + Collider[] colliders; + + + public FingerColliders fingerColliders; + + [System.Serializable] + public class FingerColliders + { + [Tooltip("Starting at tip and going down. Max 2.")] + public Transform[] thumbColliders = new Transform[1]; + [Tooltip("Starting at tip and going down. Max 3.")] + public Transform[] indexColliders = new Transform[2]; + [Tooltip("Starting at tip and going down. Max 3.")] + public Transform[] middleColliders = new Transform[2]; + [Tooltip("Starting at tip and going down. Max 3.")] + public Transform[] ringColliders = new Transform[2]; + [Tooltip("Starting at tip and going down. Max 3.")] + public Transform[] pinkyColliders = new Transform[2]; + + public Transform[] this[int finger] + { + get + { + switch (finger) + { + case 0: + return thumbColliders; + case 1: + return indexColliders; + case 2: + return middleColliders; + case 3: + return ringColliders; + case 4: + return pinkyColliders; + default: + return null; + } + } + set + { + switch (finger) + { + case 0: + thumbColliders = value; break; + case 1: + indexColliders = value; break; + case 2: + middleColliders = value; break; + case 3: + ringColliders = value; break; + case 4: + pinkyColliders = value; break; + } + } + } + + } + + private static PhysicMaterial physicMaterial_lowfriction; + private static PhysicMaterial physicMaterial_highfriction; + + private void Awake() + { + rigidbody = GetComponent(); + rigidbody.maxAngularVelocity = 50; + } + + private void Start() + { + colliders = GetComponentsInChildren(); + + if (physicMaterial_lowfriction == null) + { + physicMaterial_lowfriction = new PhysicMaterial("hand_lowFriction"); + physicMaterial_lowfriction.dynamicFriction = 0; + physicMaterial_lowfriction.staticFriction = 0; + physicMaterial_lowfriction.bounciness = 0; + physicMaterial_lowfriction.bounceCombine = PhysicMaterialCombine.Minimum; + physicMaterial_lowfriction.frictionCombine = PhysicMaterialCombine.Minimum; + } + + if (physicMaterial_highfriction == null) + { + physicMaterial_highfriction = new PhysicMaterial("hand_highFriction"); + physicMaterial_highfriction.dynamicFriction = 1f; + physicMaterial_highfriction.staticFriction = 1f; + physicMaterial_highfriction.bounciness = 0; + physicMaterial_highfriction.bounceCombine = PhysicMaterialCombine.Minimum; + physicMaterial_highfriction.frictionCombine = PhysicMaterialCombine.Average; + } + + SetPhysicMaterial(physicMaterial_lowfriction); + + scale = SteamVR_Utils.GetLossyScale(hand.transform); + } + + void SetPhysicMaterial(PhysicMaterial mat) + { + if (colliders == null) colliders = GetComponentsInChildren(); + for (int i = 0; i < colliders.Length; i++) + { + colliders[i].sharedMaterial = mat; + } + } + + float scale; + + public void SetCollisionDetectionEnabled(bool value) + { + rigidbody.detectCollisions = value; + } + + public void MoveTo(Vector3 position, Quaternion rotation) + { + targetPosition = position; + targetRotation = rotation; + //rigidbody.MovePosition(position); + //rigidbody.MoveRotation(rotation); + + ExecuteFixedUpdate(); + } + + public void TeleportTo(Vector3 position, Quaternion rotation) + { + targetPosition = position; + targetRotation = rotation; + + MoveTo(position, rotation); + + rigidbody.position = position; + + if (rotation.x != 0 || rotation.y != 0 || rotation.z != 0 || rotation.w != 0) + rigidbody.rotation = rotation; + + //also update transform in case physics is disabled + transform.position = position; + transform.rotation = rotation; + } + + public void Reset() + { + TeleportTo(targetPosition, targetRotation); + } + + public void SetCenterPoint(Vector3 newCenter) + { + center = newCenter; + } + + private Vector3 center; + + private Vector3 targetPosition = Vector3.zero; + private Quaternion targetRotation = Quaternion.identity; + + protected const float MaxVelocityChange = 10f; + protected const float VelocityMagic = 6000f; + protected const float AngularVelocityMagic = 50f; + protected const float MaxAngularVelocityChange = 20f; + + public bool collidersInRadius; + protected void ExecuteFixedUpdate() + { + collidersInRadius = Physics.CheckSphere(center, 0.2f, collisionMask); + if (collidersInRadius == false) + { + //keep updating velocity, just in case. Otherwise you get jitter + rigidbody.velocity = Vector3.zero; + rigidbody.angularVelocity = Vector3.zero; + /* + rigidbody.velocity = (targetPosition - rigidbody.position) / Time.fixedDeltaTime; + float angle; Vector3 axis; + (targetRotation * Quaternion.Inverse(rigidbody.rotation)).ToAngleAxis(out angle, out axis); + rigidbody.angularVelocity = axis.normalized * angle / Time.fixedDeltaTime; + */ + + rigidbody.MovePosition(targetPosition); + rigidbody.MoveRotation(targetRotation); + } + else + { + Vector3 velocityTarget, angularTarget; + bool success = GetTargetVelocities(out velocityTarget, out angularTarget); + if (success) + { + float maxAngularVelocityChange = MaxAngularVelocityChange * scale; + float maxVelocityChange = MaxVelocityChange * scale; + + rigidbody.velocity = Vector3.MoveTowards(rigidbody.velocity, velocityTarget, maxVelocityChange); + rigidbody.angularVelocity = Vector3.MoveTowards(rigidbody.angularVelocity, angularTarget, maxAngularVelocityChange); + } + } + } + + + + protected bool GetTargetVelocities(out Vector3 velocityTarget, out Vector3 angularTarget) + { + bool realNumbers = false; + + float velocityMagic = VelocityMagic; + float angularVelocityMagic = AngularVelocityMagic; + + Vector3 positionDelta = (targetPosition - rigidbody.position); + velocityTarget = (positionDelta * velocityMagic * Time.deltaTime); + + if (float.IsNaN(velocityTarget.x) == false && float.IsInfinity(velocityTarget.x) == false) + { + realNumbers = true; + } + else + velocityTarget = Vector3.zero; + + + Quaternion rotationDelta = targetRotation * Quaternion.Inverse(rigidbody.rotation); + + + float angle; + Vector3 axis; + rotationDelta.ToAngleAxis(out angle, out axis); + + if (angle > 180) + angle -= 360; + + if (angle != 0 && float.IsNaN(axis.x) == false && float.IsInfinity(axis.x) == false) + { + angularTarget = angle * axis * angularVelocityMagic * Time.deltaTime; + + realNumbers &= true; + } + else + angularTarget = Vector3.zero; + + return realNumbers; + } + + + const float minCollisionEnergy = 0.1f; + const float maxCollisionEnergy = 1.0f; + + const float minCollisionHapticsTime = 0.2f; + private float lastCollisionHapticsTime; + private void OnCollisionEnter(Collision collision) + { + bool touchingDynamic = false; + if (collision.rigidbody != null) + { + if (collision.rigidbody.isKinematic == false) touchingDynamic = true; + } + + // low friction if touching static object, high friction if touching dynamic + SetPhysicMaterial(touchingDynamic ? physicMaterial_highfriction : physicMaterial_lowfriction); + + + + float energy = collision.relativeVelocity.magnitude; + + if(energy > minCollisionEnergy && Time.time - lastCollisionHapticsTime > minCollisionHapticsTime) + { + lastCollisionHapticsTime = Time.time; + + float intensity = Util.RemapNumber(energy, minCollisionEnergy, maxCollisionEnergy, 0.3f, 1.0f); + float length = Util.RemapNumber(energy, minCollisionEnergy, maxCollisionEnergy, 0.0f, 0.06f); + + hand.hand.TriggerHapticPulse(length, 100, intensity); + } + } + + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs.meta new file mode 100644 index 00000000..3ad3f15a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2820b584f2917744bafbfd2f8f387225 +timeCreated: 1567795659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs new file mode 100644 index 00000000..39fe5d67 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs @@ -0,0 +1,237 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: handles the physics of hands colliding with the world +// +//============================================================================= + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Valve.VR.InteractionSystem +{ + public class HandPhysics : MonoBehaviour + { + [Tooltip("Hand collider prefab to instantiate")] + public HandCollider handColliderPrefab; + [HideInInspector] + public HandCollider handCollider; + + [Tooltip("Layers to consider when checking if an area is clear")] + public LayerMask clearanceCheckMask; + + [HideInInspector] + public Hand hand; + + // distance at which hand will teleport back to controller + const float handResetDistance = 0.6f; + + const float collisionReenableClearanceRadius = 0.1f; + + private bool initialized = false; + + private bool collisionsEnabled = true; + + + private void Start() + { + hand = GetComponent(); + //spawn hand collider and link it to us + + handCollider = ((GameObject)Instantiate(handColliderPrefab.gameObject)).GetComponent(); + Vector3 localPosition = handCollider.transform.localPosition; + Quaternion localRotation = handCollider.transform.localRotation; + + handCollider.transform.parent = Player.instance.transform; + handCollider.transform.localPosition = localPosition; + handCollider.transform.localRotation = localRotation; + handCollider.hand = this; + + GetComponent().onTransformUpdated.AddListener(UpdateHand); + } + + // cached transformations + Matrix4x4 wristToRoot; + Matrix4x4 rootToArmature; + Matrix4x4 wristToArmature; + + Vector3 targetPosition = Vector3.zero; + Quaternion targetRotation = Quaternion.identity; + + //bones + const int wristBone = SteamVR_Skeleton_JointIndexes.wrist; + const int rootBone = SteamVR_Skeleton_JointIndexes.root; + + private void FixedUpdate() + { + if (hand.skeleton == null) return; + initialized = true; + + UpdateCenterPoint(); + + handCollider.MoveTo(targetPosition, targetRotation); + + if ((handCollider.transform.position - targetPosition).sqrMagnitude > handResetDistance * handResetDistance) + handCollider.TeleportTo(targetPosition, targetRotation); + + UpdateFingertips(); + } + + private void UpdateCenterPoint() + { + Vector3 offset = hand.skeleton.GetBonePosition(SteamVR_Skeleton_JointIndexes.middleProximal) - hand.skeleton.GetBonePosition(SteamVR_Skeleton_JointIndexes.root); + if (hand.HasSkeleton()) + { + handCollider.SetCenterPoint(hand.skeleton.transform.position + offset); + } + } + + Collider[] clearanceBuffer = new Collider[1]; + + private void UpdatePositions() + { + // disable collisions when holding something + if (hand.currentAttachedObject != null) + { + collisionsEnabled = false; + } + else + { + // wait for area to become clear before reenabling collisions + if (!collisionsEnabled) + { + clearanceBuffer[0] = null; + Physics.OverlapSphereNonAlloc(hand.objectAttachmentPoint.position, collisionReenableClearanceRadius, clearanceBuffer); + // if we don't find anything in the vicinity, reenable collisions! + if (clearanceBuffer[0] == null) + { + collisionsEnabled = true; + } + } + } + + handCollider.SetCollisionDetectionEnabled(collisionsEnabled); + + if (hand.skeleton == null) return; + initialized = true; + + // get the desired pose of the wrist in world space. Can't get the wrist bone transform, as this is affected by the resulting physics. + + wristToRoot = Matrix4x4.TRS(ProcessPos(wristBone, hand.skeleton.GetBone(wristBone).localPosition), + ProcessRot(wristBone, hand.skeleton.GetBone(wristBone).localRotation), + Vector3.one).inverse; + + rootToArmature = Matrix4x4.TRS(ProcessPos(rootBone, hand.skeleton.GetBone(rootBone).localPosition), + ProcessRot(rootBone, hand.skeleton.GetBone(rootBone).localRotation), + Vector3.one).inverse; + + wristToArmature = (wristToRoot * rootToArmature).inverse; + + // step up through virtual transform hierarchy and into world space + targetPosition = transform.TransformPoint(wristToArmature.MultiplyPoint3x4(Vector3.zero)); + + targetRotation = transform.rotation * wristToArmature.GetRotation(); + + + //bypass physics when game paused + if (Time.timeScale == 0) + { + handCollider.TeleportTo(targetPosition, targetRotation); + } + } + + Transform wrist; + + const int thumbBone = SteamVR_Skeleton_JointIndexes.thumbDistal; + const int indexBone = SteamVR_Skeleton_JointIndexes.indexDistal; + const int middleBone = SteamVR_Skeleton_JointIndexes.middleDistal; + const int ringBone = SteamVR_Skeleton_JointIndexes.ringDistal; + const int pinkyBone = SteamVR_Skeleton_JointIndexes.pinkyDistal; + + void UpdateFingertips() + { + wrist = hand.skeleton.GetBone(SteamVR_Skeleton_JointIndexes.wrist); + + // set finger tip positions in wrist space + + for(int finger = 0; finger < 5; finger++) + { + int tip = SteamVR_Skeleton_JointIndexes.GetBoneForFingerTip(finger); + int bone = tip; + for(int i = 0; i < handCollider.fingerColliders[finger].Length; i++) + { + bone = tip - 1 - i; // start at distal and go down + if (handCollider.fingerColliders[finger][i] != null) + handCollider.fingerColliders[finger][i].localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(bone).position); + } + } + /* + if(handCollider.tip_thumb != null) + handCollider.tip_thumb.localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(thumbBone).position); + + if(handCollider.tip_index != null) + handCollider.tip_index.localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(indexBone).position); + + if(handCollider.tip_middle != null) + handCollider.tip_middle.localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(middleBone).position); + + if(handCollider.tip_ring != null) + handCollider.tip_ring.localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(ringBone).position); + + if (handCollider.tip_pinky != null) + handCollider.tip_pinky.localPosition = wrist.InverseTransformPoint(hand.skeleton.GetBone(pinkyBone).position); + */ + } + + void UpdateHand(SteamVR_Behaviour_Pose pose, SteamVR_Input_Sources inputSource) + { + if (!initialized) return; + + UpdateCenterPoint(); + + UpdatePositions(); + + Quaternion offsetRotation = handCollider.transform.rotation * wristToArmature.inverse.GetRotation(); + + hand.mainRenderModel.transform.rotation = offsetRotation; + + Vector3 offsetPosition = handCollider.transform.TransformPoint(wristToArmature.inverse.MultiplyPoint3x4(Vector3.zero)); + + hand.mainRenderModel.transform.position = offsetPosition; + + /* + Vector3 wristPointInArmatureSpace = transform.InverseTransformPoint(handCollider.transform.position); + + Vector3 handTargetPosition = + + hand.mainRenderModel.transform.position = handTargetPosition; + + //Quaternion handTargetRotation = transform.rotation * (wristToArmature.inverse.rotation * (Quaternion.Inverse(transform.rotation) * handCollider.transform.rotation)); + + //hand.mainRenderModel.transform.rotation = handTargetRotation; + */ + } + + Vector3 ProcessPos(int boneIndex, Vector3 pos) + { + if(hand.skeleton.mirroring != SteamVR_Behaviour_Skeleton.MirrorType.None) + { + return SteamVR_Behaviour_Skeleton.MirrorPosition(boneIndex, pos); + } + + return pos; + } + + Quaternion ProcessRot(int boneIndex, Quaternion rot) + { + if (hand.skeleton.mirroring != SteamVR_Behaviour_Skeleton.MirrorType.None) + { + return SteamVR_Behaviour_Skeleton.MirrorRotation(boneIndex, rot); + } + + return rot; + } + + + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs.meta new file mode 100644 index 00000000..2c74f868 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HandPhysics.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1e75fe4b0c190eb4ba97e59f062510e9 +timeCreated: 1567795659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs new file mode 100644 index 00000000..18a15cf8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs @@ -0,0 +1,83 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Triggers haptic pulses based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class HapticRack : MonoBehaviour + { + [Tooltip( "The linear mapping driving the haptic rack" )] + public LinearMapping linearMapping; + + [Tooltip( "The number of haptic pulses evenly distributed along the mapping" )] + public int teethCount = 128; + + [Tooltip( "Minimum duration of the haptic pulse" )] + public int minimumPulseDuration = 500; + + [Tooltip( "Maximum duration of the haptic pulse" )] + public int maximumPulseDuration = 900; + + [Tooltip( "This event is triggered every time a haptic pulse is made" )] + public UnityEvent onPulse; + + private Hand hand; + private int previousToothIndex = -1; + + //------------------------------------------------- + void Awake() + { + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + this.hand = hand; + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + this.hand = null; + } + + + //------------------------------------------------- + void Update() + { + int currentToothIndex = Mathf.RoundToInt( linearMapping.value * teethCount - 0.5f ); + if ( currentToothIndex != previousToothIndex ) + { + Pulse(); + previousToothIndex = currentToothIndex; + } + } + + + //------------------------------------------------- + private void Pulse() + { + if ( hand && (hand.isActive) && ( hand.GetBestGrabbingType() != GrabTypes.None ) ) + { + ushort duration = (ushort)Random.Range( minimumPulseDuration, maximumPulseDuration + 1 ); + hand.TriggerHapticPulse( duration ); + + onPulse.Invoke(); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta new file mode 100644 index 00000000..60a7eee6 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 817521c5973e4ee45905ee97df3c38ad +timeCreated: 1544851962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs new file mode 100644 index 00000000..9d3b138c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs @@ -0,0 +1,21 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Sets this GameObject as inactive when it loses focus from the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class HideOnHandFocusLost : MonoBehaviour + { + //------------------------------------------------- + private void OnHandFocusLost( Hand hand ) + { + gameObject.SetActive( false ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta new file mode 100644 index 00000000..a19b62c8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eb6d6653511aff5409d0827d4e3b79ea +timeCreated: 1544851962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs new file mode 100644 index 00000000..51a77160 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs @@ -0,0 +1,111 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Drives a linear mapping based on position between 2 positions +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using UnityEngine.Events; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent(typeof(Interactable))] + public class HoverButton : MonoBehaviour + { + public Transform movingPart; + + public Vector3 localMoveDistance = new Vector3(0, -0.1f, 0); + + [Range(0, 1)] + public float engageAtPercent = 0.95f; + + [Range(0, 1)] + public float disengageAtPercent = 0.9f; + + public HandEvent onButtonDown; + public HandEvent onButtonUp; + public HandEvent onButtonIsPressed; + + public bool engaged = false; + public bool buttonDown = false; + public bool buttonUp = false; + + private Vector3 startPosition; + private Vector3 endPosition; + + private Vector3 handEnteredPosition; + + private bool hovering; + + private Hand lastHoveredHand; + + private void Start() + { + if (movingPart == null && this.transform.childCount > 0) + movingPart = this.transform.GetChild(0); + + startPosition = movingPart.localPosition; + endPosition = startPosition + localMoveDistance; + handEnteredPosition = endPosition; + } + + private void HandHoverUpdate(Hand hand) + { + hovering = true; + lastHoveredHand = hand; + + bool wasEngaged = engaged; + + float currentDistance = Vector3.Distance(movingPart.parent.InverseTransformPoint(hand.transform.position), endPosition); + float enteredDistance = Vector3.Distance(handEnteredPosition, endPosition); + + if (currentDistance > enteredDistance) + { + enteredDistance = currentDistance; + handEnteredPosition = movingPart.parent.InverseTransformPoint(hand.transform.position); + } + + float distanceDifference = enteredDistance - currentDistance; + + float lerp = Mathf.InverseLerp(0, localMoveDistance.magnitude, distanceDifference); + + if (lerp > engageAtPercent) + engaged = true; + else if (lerp < disengageAtPercent) + engaged = false; + + movingPart.localPosition = Vector3.Lerp(startPosition, endPosition, lerp); + + InvokeEvents(wasEngaged, engaged); + } + + private void LateUpdate() + { + if (hovering == false) + { + movingPart.localPosition = startPosition; + handEnteredPosition = endPosition; + + InvokeEvents(engaged, false); + engaged = false; + } + + hovering = false; + } + + private void InvokeEvents(bool wasEngaged, bool isEngaged) + { + buttonDown = wasEngaged == false && isEngaged == true; + buttonUp = wasEngaged == true && isEngaged == false; + + if (buttonDown && onButtonDown != null) + onButtonDown.Invoke(lastHoveredHand); + if (buttonUp && onButtonUp != null) + onButtonUp.Invoke(lastHoveredHand); + if (isEngaged && onButtonIsPressed != null) + onButtonIsPressed.Invoke(lastHoveredHand); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs.meta new file mode 100644 index 00000000..2d779c85 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/HoverButton.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c0e35ef0cc211b408d2d7e7eb0f850d +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs new file mode 100644 index 00000000..7daa7980 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Makes this object ignore any hovering by the hands +// +//============================================================================= + +using UnityEngine; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class IgnoreHovering : MonoBehaviour + { + [Tooltip( "If Hand is not null, only ignore the specified hand" )] + public Hand onlyIgnoreHand = null; + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta new file mode 100644 index 00000000..7e1d35eb --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5a1be5da1c87864582d778e52de4e9b +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs new file mode 100644 index 00000000..ce97a312 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs @@ -0,0 +1,79 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Makes the hand act as an input module for Unity's event system +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class InputModule : BaseInputModule + { + private GameObject submitObject; + + //------------------------------------------------- + private static InputModule _instance; + public static InputModule instance + { + get + { + if ( _instance == null ) + _instance = GameObject.FindObjectOfType(); + + return _instance; + } + } + + + //------------------------------------------------- + public override bool ShouldActivateModule() + { + if ( !base.ShouldActivateModule() ) + return false; + + return submitObject != null; + } + + + //------------------------------------------------- + public void HoverBegin( GameObject gameObject ) + { + PointerEventData pointerEventData = new PointerEventData( eventSystem ); + ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerEnterHandler ); + } + + + //------------------------------------------------- + public void HoverEnd( GameObject gameObject ) + { + PointerEventData pointerEventData = new PointerEventData( eventSystem ); + pointerEventData.selectedObject = null; + ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerExitHandler ); + } + + + //------------------------------------------------- + public void Submit( GameObject gameObject ) + { + submitObject = gameObject; + } + + + //------------------------------------------------- + public override void Process() + { + if ( submitObject ) + { + BaseEventData data = GetBaseEventData(); + data.selectedObject = submitObject; + ExecuteEvents.Execute( submitObject, data, ExecuteEvents.submitHandler ); + + submitObject = null; + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta new file mode 100644 index 00000000..8aba9074 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9e05292e0d62b542ac5bba92674a86d +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs new file mode 100644 index 00000000..a48205e3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs @@ -0,0 +1,366 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object will get hover events and can be attached to the hands +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class Interactable : MonoBehaviour + { + [Tooltip("Activates an action set on attach and deactivates on detach")] + public SteamVR_ActionSet activateActionSetOnAttach; + + [Tooltip("Hide the whole hand on attachment and show on detach")] + public bool hideHandOnAttach = true; + + [Tooltip("Hide the skeleton part of the hand on attachment and show on detach")] + public bool hideSkeletonOnAttach = false; + + [Tooltip("Hide the controller part of the hand on attachment and show on detach")] + public bool hideControllerOnAttach = false; + + [Tooltip("The integer in the animator to trigger on pickup. 0 for none")] + public int handAnimationOnPickup = 0; + + [Tooltip("The range of motion to set on the skeleton. None for no change.")] + public SkeletalMotionRangeChange setRangeOfMotionOnPickup = SkeletalMotionRangeChange.None; + + public delegate void OnAttachedToHandDelegate(Hand hand); + public delegate void OnDetachedFromHandDelegate(Hand hand); + + public event OnAttachedToHandDelegate onAttachedToHand; + public event OnDetachedFromHandDelegate onDetachedFromHand; + + + [Tooltip("Specify whether you want to snap to the hand's object attachment point, or just the raw hand")] + public bool useHandObjectAttachmentPoint = true; + + public bool attachEaseIn = false; + [HideInInspector] + public AnimationCurve snapAttachEaseInCurve = AnimationCurve.EaseInOut(0.0f, 0.0f, 1.0f, 1.0f); + public float snapAttachEaseInTime = 0.15f; + + public bool snapAttachEaseInCompleted = false; + + + // [Tooltip("The skeleton pose to apply when grabbing. Can only set this or handFollowTransform.")] + [HideInInspector] + public SteamVR_Skeleton_Poser skeletonPoser; + + [Tooltip("Should the rendered hand lock on to and follow the object")] + public bool handFollowTransform= true; + + + [Tooltip("Set whether or not you want this interactible to highlight when hovering over it")] + public bool highlightOnHover = true; + protected MeshRenderer[] highlightRenderers; + protected MeshRenderer[] existingRenderers; + protected GameObject highlightHolder; + protected SkinnedMeshRenderer[] highlightSkinnedRenderers; + protected SkinnedMeshRenderer[] existingSkinnedRenderers; + protected static Material highlightMat; + [Tooltip("An array of child gameObjects to not render a highlight for. Things like transparent parts, vfx, etc.")] + public GameObject[] hideHighlight; + + [Tooltip("Higher is better")] + public int hoverPriority = 0; + + [System.NonSerialized] + public Hand attachedToHand; + + [System.NonSerialized] + public List hoveringHands = new List(); + public Hand hoveringHand + { + get + { + if (hoveringHands.Count > 0) + return hoveringHands[0]; + return null; + } + } + + + public bool isDestroying { get; protected set; } + public bool isHovering { get; protected set; } + public bool wasHovering { get; protected set; } + + + private void Awake() + { + skeletonPoser = GetComponent(); + } + + protected virtual void Start() + { + highlightMat = (Material)Resources.Load("SteamVR_HoverHighlight", typeof(Material)); + + if (highlightMat == null) + Debug.LogError("[SteamVR Interaction] Hover Highlight Material is missing. Please create a material named 'SteamVR_HoverHighlight' and place it in a Resources folder", this); + + if (skeletonPoser != null) + { + if (useHandObjectAttachmentPoint) + { + //Debug.LogWarning("[SteamVR Interaction] SkeletonPose and useHandObjectAttachmentPoint both set at the same time. Ignoring useHandObjectAttachmentPoint."); + useHandObjectAttachmentPoint = false; + } + } + } + + protected virtual bool ShouldIgnoreHighlight(Component component) + { + return ShouldIgnore(component.gameObject); + } + + protected virtual bool ShouldIgnore(GameObject check) + { + for (int ignoreIndex = 0; ignoreIndex < hideHighlight.Length; ignoreIndex++) + { + if (check == hideHighlight[ignoreIndex]) + return true; + } + + return false; + } + + protected virtual void CreateHighlightRenderers() + { + existingSkinnedRenderers = this.GetComponentsInChildren(true); + highlightHolder = new GameObject("Highlighter"); + highlightSkinnedRenderers = new SkinnedMeshRenderer[existingSkinnedRenderers.Length]; + + for (int skinnedIndex = 0; skinnedIndex < existingSkinnedRenderers.Length; skinnedIndex++) + { + SkinnedMeshRenderer existingSkinned = existingSkinnedRenderers[skinnedIndex]; + + if (ShouldIgnoreHighlight(existingSkinned)) + continue; + + GameObject newSkinnedHolder = new GameObject("SkinnedHolder"); + newSkinnedHolder.transform.parent = highlightHolder.transform; + SkinnedMeshRenderer newSkinned = newSkinnedHolder.AddComponent(); + Material[] materials = new Material[existingSkinned.sharedMaterials.Length]; + for (int materialIndex = 0; materialIndex < materials.Length; materialIndex++) + { + materials[materialIndex] = highlightMat; + } + + newSkinned.sharedMaterials = materials; + newSkinned.sharedMesh = existingSkinned.sharedMesh; + newSkinned.rootBone = existingSkinned.rootBone; + newSkinned.updateWhenOffscreen = existingSkinned.updateWhenOffscreen; + newSkinned.bones = existingSkinned.bones; + + highlightSkinnedRenderers[skinnedIndex] = newSkinned; + } + + MeshFilter[] existingFilters = this.GetComponentsInChildren(true); + existingRenderers = new MeshRenderer[existingFilters.Length]; + highlightRenderers = new MeshRenderer[existingFilters.Length]; + + for (int filterIndex = 0; filterIndex < existingFilters.Length; filterIndex++) + { + MeshFilter existingFilter = existingFilters[filterIndex]; + MeshRenderer existingRenderer = existingFilter.GetComponent(); + + if (existingFilter == null || existingRenderer == null || ShouldIgnoreHighlight(existingFilter)) + continue; + + GameObject newFilterHolder = new GameObject("FilterHolder"); + newFilterHolder.transform.parent = highlightHolder.transform; + MeshFilter newFilter = newFilterHolder.AddComponent(); + newFilter.sharedMesh = existingFilter.sharedMesh; + MeshRenderer newRenderer = newFilterHolder.AddComponent(); + + Material[] materials = new Material[existingRenderer.sharedMaterials.Length]; + for (int materialIndex = 0; materialIndex < materials.Length; materialIndex++) + { + materials[materialIndex] = highlightMat; + } + newRenderer.sharedMaterials = materials; + + highlightRenderers[filterIndex] = newRenderer; + existingRenderers[filterIndex] = existingRenderer; + } + } + + protected virtual void UpdateHighlightRenderers() + { + if (highlightHolder == null) + return; + + for (int skinnedIndex = 0; skinnedIndex < existingSkinnedRenderers.Length; skinnedIndex++) + { + SkinnedMeshRenderer existingSkinned = existingSkinnedRenderers[skinnedIndex]; + SkinnedMeshRenderer highlightSkinned = highlightSkinnedRenderers[skinnedIndex]; + + if (existingSkinned != null && highlightSkinned != null && attachedToHand == false) + { + highlightSkinned.transform.position = existingSkinned.transform.position; + highlightSkinned.transform.rotation = existingSkinned.transform.rotation; + highlightSkinned.transform.localScale = existingSkinned.transform.lossyScale; + highlightSkinned.localBounds = existingSkinned.localBounds; + highlightSkinned.enabled = isHovering && existingSkinned.enabled && existingSkinned.gameObject.activeInHierarchy; + + int blendShapeCount = existingSkinned.sharedMesh.blendShapeCount; + for (int blendShapeIndex = 0; blendShapeIndex < blendShapeCount; blendShapeIndex++) + { + highlightSkinned.SetBlendShapeWeight(blendShapeIndex, existingSkinned.GetBlendShapeWeight(blendShapeIndex)); + } + } + else if (highlightSkinned != null) + highlightSkinned.enabled = false; + + } + + for (int rendererIndex = 0; rendererIndex < highlightRenderers.Length; rendererIndex++) + { + MeshRenderer existingRenderer = existingRenderers[rendererIndex]; + MeshRenderer highlightRenderer = highlightRenderers[rendererIndex]; + + if (existingRenderer != null && highlightRenderer != null && attachedToHand == false) + { + highlightRenderer.transform.position = existingRenderer.transform.position; + highlightRenderer.transform.rotation = existingRenderer.transform.rotation; + highlightRenderer.transform.localScale = existingRenderer.transform.lossyScale; + highlightRenderer.enabled = isHovering && existingRenderer.enabled && existingRenderer.gameObject.activeInHierarchy; + } + else if (highlightRenderer != null) + highlightRenderer.enabled = false; + } + } + + /// + /// Called when a Hand starts hovering over this object + /// + protected virtual void OnHandHoverBegin(Hand hand) + { + wasHovering = isHovering; + isHovering = true; + + hoveringHands.Add(hand); + + if (highlightOnHover == true && wasHovering == false) + { + CreateHighlightRenderers(); + UpdateHighlightRenderers(); + } + } + + + /// + /// Called when a Hand stops hovering over this object + /// + protected virtual void OnHandHoverEnd(Hand hand) + { + wasHovering = isHovering; + + hoveringHands.Remove(hand); + + if (hoveringHands.Count == 0) + { + isHovering = false; + + if (highlightOnHover && highlightHolder != null) + Destroy(highlightHolder); + } + } + + protected virtual void Update() + { + if (highlightOnHover) + { + UpdateHighlightRenderers(); + + if (isHovering == false && highlightHolder != null) + Destroy(highlightHolder); + } + } + + + protected float blendToPoseTime = 0.1f; + protected float releasePoseBlendTime = 0.2f; + + protected virtual void OnAttachedToHand(Hand hand) + { + if (activateActionSetOnAttach != null) + activateActionSetOnAttach.Activate(hand.handType); + + if (onAttachedToHand != null) + { + onAttachedToHand.Invoke(hand); + } + + if (skeletonPoser != null && hand.skeleton != null) + { + hand.skeleton.BlendToPoser(skeletonPoser, blendToPoseTime); + } + + attachedToHand = hand; + } + + protected virtual void OnDetachedFromHand(Hand hand) + { + if (activateActionSetOnAttach != null) + { + if (hand.otherHand == null || hand.otherHand.currentAttachedObjectInfo.HasValue == false || + (hand.otherHand.currentAttachedObjectInfo.Value.interactable != null && + hand.otherHand.currentAttachedObjectInfo.Value.interactable.activateActionSetOnAttach != this.activateActionSetOnAttach)) + { + activateActionSetOnAttach.Deactivate(hand.handType); + } + } + + if (onDetachedFromHand != null) + { + onDetachedFromHand.Invoke(hand); + } + + + if (skeletonPoser != null) + { + if (hand.skeleton != null) + hand.skeleton.BlendToSkeleton(releasePoseBlendTime); + } + + attachedToHand = null; + } + + protected virtual void OnDestroy() + { + isDestroying = true; + + if (attachedToHand != null) + { + attachedToHand.DetachObject(this.gameObject, false); + attachedToHand.skeleton.BlendToSkeleton(0.1f); + } + + if (highlightHolder != null) + Destroy(highlightHolder); + + } + + + protected virtual void OnDisable() + { + isDestroying = true; + + if (attachedToHand != null) + { + attachedToHand.ForceHoverUnlock(); + } + + if (highlightHolder != null) + Destroy(highlightHolder); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta new file mode 100644 index 00000000..04d8e564 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b93b6a877adcbf94c89a9d6e0c0e844d +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs new file mode 100644 index 00000000..e80ec701 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs @@ -0,0 +1,201 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object will get hover events and can be attached to the hands +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class InteractableDebug : MonoBehaviour + { + [System.NonSerialized] + public Hand attachedToHand; + + public float simulateReleasesForXSecondsAroundRelease = 0; + public float simulateReleasesEveryXSeconds = 0.005f; + public bool setPositionsForSimulations = false; + + private Renderer[] selfRenderers; + + private Collider[] colliders; + + private Color lastColor; + + private Throwable throwable; + private bool isThrowable { get { return throwable != null; } } + + private const bool onlyColorOnChange = true; + + public new Rigidbody rigidbody; + + private void Awake() + { + selfRenderers = this.GetComponentsInChildren(); + throwable = this.GetComponent(); + rigidbody = this.GetComponent(); + colliders = this.GetComponentsInChildren(); + } + + private void OnAttachedToHand( Hand hand ) + { + attachedToHand = hand; + + CreateMarker(Color.green); + } + + + protected virtual void HandAttachedUpdate(Hand hand) + { + Color grabbedColor; + switch (hand.currentAttachedObjectInfo.Value.grabbedWithType) + { + case GrabTypes.Grip: + grabbedColor = Color.blue; + break; + case GrabTypes.Pinch: + grabbedColor = Color.green; + break; + case GrabTypes.Trigger: + grabbedColor = Color.yellow; + break; + case GrabTypes.Scripted: + grabbedColor = Color.red; + break; + case GrabTypes.None: + default: + grabbedColor = Color.white; + break; + } + + if ((onlyColorOnChange && grabbedColor != lastColor) || onlyColorOnChange == false) + ColorSelf(grabbedColor); + + lastColor = grabbedColor; + } + + + private void OnDetachedFromHand( Hand hand ) + { + if (isThrowable) + { + Vector3 velocity; + Vector3 angularVelocity; + + throwable.GetReleaseVelocities(hand, out velocity, out angularVelocity); + + CreateMarker(Color.cyan, velocity.normalized); + } + + CreateMarker(Color.red); + attachedToHand = null; + + if (isSimulation == false && simulateReleasesForXSecondsAroundRelease != 0) + { + float startTime = -simulateReleasesForXSecondsAroundRelease; + float endTime = simulateReleasesForXSecondsAroundRelease; + + List list = new List(); + list.Add(this); + + for (float offset = startTime; offset <= endTime; offset += simulateReleasesEveryXSeconds) + { + float lerp = Mathf.InverseLerp(startTime, endTime, offset); + InteractableDebug copy = CreateSimulation(hand, offset, Color.Lerp(Color.red, Color.green, lerp)); + list.Add(copy); + } + + for (int index = 0; index < list.Count; index++) + { + for (int otherIndex = 0; otherIndex < list.Count; otherIndex++) + { + list[index].IgnoreObject(list[otherIndex]); + } + } + } + } + + public Collider[] GetColliders() + { + return colliders; + } + + public void IgnoreObject(InteractableDebug otherInteractable) + { + Collider[] otherColliders = otherInteractable.GetColliders(); + + for (int myIndex = 0; myIndex < colliders.Length; myIndex++) + { + for (int otherIndex = 0; otherIndex < otherColliders.Length; otherIndex++) + { + Physics.IgnoreCollision(colliders[myIndex], otherColliders[otherIndex]); + } + } + } + + private bool isSimulation = false; + public void SetIsSimulation() + { + isSimulation = true; + } + + private InteractableDebug CreateSimulation(Hand fromHand, float timeOffset, Color copyColor) + { + GameObject copy = GameObject.Instantiate(this.gameObject); + InteractableDebug debugCopy = copy.GetComponent(); + debugCopy.SetIsSimulation(); + debugCopy.ColorSelf(copyColor); + copy.name = string.Format("{0} [offset: {1:0.000}]", copy.name, timeOffset); + + Vector3 velocity = fromHand.GetTrackedObjectVelocity(timeOffset); + velocity *= throwable.scaleReleaseVelocity; + + debugCopy.rigidbody.velocity = velocity; + + return debugCopy; + } + + private void CreateMarker(Color markerColor, float destroyAfter = 10) + { + CreateMarker(markerColor, attachedToHand.GetTrackedObjectVelocity().normalized, destroyAfter); + } + + private void CreateMarker(Color markerColor, Vector3 forward, float destroyAfter = 10) + { + GameObject baseMarker = GameObject.CreatePrimitive(PrimitiveType.Cube); + DestroyImmediate(baseMarker.GetComponent()); + baseMarker.transform.localScale = new Vector3(0.02f, 0.02f, 0.02f); + + GameObject line = GameObject.Instantiate(baseMarker); + line.transform.localScale = new Vector3(0.01f, 0.01f, 0.25f); + line.transform.parent = baseMarker.transform; + line.transform.localPosition = new Vector3(0, 0, line.transform.localScale.z / 2f); + + baseMarker.transform.position = attachedToHand.transform.position; + baseMarker.transform.forward = forward; + + ColorThing(markerColor, baseMarker.GetComponentsInChildren()); + + if (destroyAfter > 0) + Destroy(baseMarker, destroyAfter); + } + + private void ColorSelf(Color newColor) + { + ColorThing(newColor, selfRenderers); + } + + private void ColorThing(Color newColor, Renderer[] renderers) + { + for (int rendererIndex = 0; rendererIndex < renderers.Length; rendererIndex++) + { + renderers[rendererIndex].material.color = newColor; + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs.meta new file mode 100644 index 00000000..4bca52c8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableDebug.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 78549ac336d4d37418a4d4e0d981f91f +timeCreated: 1544851963 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs new file mode 100644 index 00000000..4102d074 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs @@ -0,0 +1,49 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Sends UnityEvents for basic hand interactions +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class InteractableHoverEvents : MonoBehaviour + { + public UnityEvent onHandHoverBegin; + public UnityEvent onHandHoverEnd; + public UnityEvent onAttachedToHand; + public UnityEvent onDetachedFromHand; + + //------------------------------------------------- + private void OnHandHoverBegin() + { + onHandHoverBegin.Invoke(); + } + + + //------------------------------------------------- + private void OnHandHoverEnd() + { + onHandHoverEnd.Invoke(); + } + + + //------------------------------------------------- + private void OnAttachedToHand( Hand hand ) + { + onAttachedToHand.Invoke(); + } + + + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + onDetachedFromHand.Invoke(); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta new file mode 100644 index 00000000..8a3573d7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c4153b26428ccf041950b92c057812a3 +timeCreated: 1544852179 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs new file mode 100644 index 00000000..cbf28fee --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs @@ -0,0 +1,24 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: A package of items that can interact with the hands and be returned +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ItemPackage : MonoBehaviour + { + public enum ItemPackageType { Unrestricted, OneHanded, TwoHanded } + + public new string name; + public ItemPackageType packageType = ItemPackageType.Unrestricted; + public GameObject itemPrefab; // object to be spawned on tracked controller + public GameObject otherHandItemPrefab; // object to be spawned in Other Hand + public GameObject previewPrefab; // used to preview inputObject + public GameObject fadedPreviewPrefab; // used to preview insubstantial inputObject + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta new file mode 100644 index 00000000..47acf20a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9f83db71b9a6764abf964ab7679f035 +timeCreated: 1544852179 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs new file mode 100644 index 00000000..ed4cdd2d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Keeps track of the ItemPackage this object is a part of +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ItemPackageReference : MonoBehaviour + { + public ItemPackage itemPackage; + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta new file mode 100644 index 00000000..38d39232 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57468e6cbae21894fa42c90413c294ff +timeCreated: 1544852179 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs new file mode 100644 index 00000000..5f51e706 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs @@ -0,0 +1,365 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Handles the spawning and returning of the ItemPackage +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine.Events; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class ItemPackageSpawner : MonoBehaviour + { + public ItemPackage itemPackage + { + get + { + return _itemPackage; + } + set + { + CreatePreviewObject(); + } + } + + public ItemPackage _itemPackage; + + public bool useItemPackagePreview = true; + private bool useFadedPreview = false; + private GameObject previewObject; + + public bool requireGrabActionToTake = false; + public bool requireReleaseActionToReturn = false; + public bool showTriggerHint = false; + + [EnumFlags] + public Hand.AttachmentFlags attachmentFlags = Hand.defaultAttachmentFlags; + + public bool takeBackItem = false; // if a hand enters this trigger and has the item this spawner dispenses at the top of the stack, remove it from the stack + + public bool acceptDifferentItems = false; + + private GameObject spawnedItem; + private bool itemIsSpawned = false; + + public UnityEvent pickupEvent; + public UnityEvent dropEvent; + + public bool justPickedUpItem = false; + + + //------------------------------------------------- + private void CreatePreviewObject() + { + if ( !useItemPackagePreview ) + { + return; + } + + ClearPreview(); + + if ( useItemPackagePreview ) + { + if ( itemPackage == null ) + { + return; + } + + if ( useFadedPreview == false ) // if we don't have a spawned item out there, use the regular preview + { + if ( itemPackage.previewPrefab != null ) + { + previewObject = Instantiate( itemPackage.previewPrefab, transform.position, Quaternion.identity ) as GameObject; + previewObject.transform.parent = transform; + previewObject.transform.localRotation = Quaternion.identity; + } + } + else // there's a spawned item out there. Use the faded preview + { + if ( itemPackage.fadedPreviewPrefab != null ) + { + previewObject = Instantiate( itemPackage.fadedPreviewPrefab, transform.position, Quaternion.identity ) as GameObject; + previewObject.transform.parent = transform; + previewObject.transform.localRotation = Quaternion.identity; + } + } + } + } + + + //------------------------------------------------- + void Start() + { + VerifyItemPackage(); + } + + + //------------------------------------------------- + private void VerifyItemPackage() + { + if ( itemPackage == null ) + { + ItemPackageNotValid(); + } + + if ( itemPackage.itemPrefab == null ) + { + ItemPackageNotValid(); + } + } + + + //------------------------------------------------- + private void ItemPackageNotValid() + { + Debug.LogError("[SteamVR Interaction] ItemPackage assigned to " + gameObject.name + " is not valid. Destroying this game object.", this); + Destroy( gameObject ); + } + + + //------------------------------------------------- + private void ClearPreview() + { + foreach ( Transform child in transform ) + { + if ( Time.time > 0 ) + { + GameObject.Destroy( child.gameObject ); + } + else + { + GameObject.DestroyImmediate( child.gameObject ); + } + } + } + + + //------------------------------------------------- + void Update() + { + if ( ( itemIsSpawned == true ) && ( spawnedItem == null ) ) + { + itemIsSpawned = false; + useFadedPreview = false; + dropEvent.Invoke(); + CreatePreviewObject(); + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + ItemPackage currentAttachedItemPackage = GetAttachedItemPackage( hand ); + + if ( currentAttachedItemPackage == itemPackage ) // the item at the top of the hand's stack has an associated ItemPackage + { + if ( takeBackItem && !requireReleaseActionToReturn ) // if we want to take back matching items and aren't waiting for a trigger press + { + TakeBackItem( hand ); + } + } + + if (!requireGrabActionToTake) // we don't require trigger press for pickup. Spawn and attach object. + { + SpawnAndAttachObject( hand, GrabTypes.Scripted ); + } + + if (requireGrabActionToTake && showTriggerHint ) + { + hand.ShowGrabHint("PickUp"); + } + } + + + //------------------------------------------------- + private void TakeBackItem( Hand hand ) + { + RemoveMatchingItemsFromHandStack( itemPackage, hand ); + + if ( itemPackage.packageType == ItemPackage.ItemPackageType.TwoHanded ) + { + RemoveMatchingItemsFromHandStack( itemPackage, hand.otherHand ); + } + } + + + //------------------------------------------------- + private ItemPackage GetAttachedItemPackage( Hand hand ) + { + GameObject currentAttachedObject = hand.currentAttachedObject; + + if ( currentAttachedObject == null ) // verify the hand is holding something + { + return null; + } + + ItemPackageReference packageReference = hand.currentAttachedObject.GetComponent(); + if ( packageReference == null ) // verify the item in the hand is matchable + { + return null; + } + + ItemPackage attachedItemPackage = packageReference.itemPackage; // return the ItemPackage reference we find. + + return attachedItemPackage; + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + if ( takeBackItem && requireReleaseActionToReturn ) + { + if (hand.isActive) + { + ItemPackage currentAttachedItemPackage = GetAttachedItemPackage( hand ); + if (currentAttachedItemPackage == itemPackage && hand.IsGrabEnding(currentAttachedItemPackage.gameObject)) + { + TakeBackItem( hand ); + return; // So that we don't pick up an ItemPackage the same frame that we return it + } + } + } + + if ( requireGrabActionToTake ) + { + GrabTypes startingGrab = hand.GetGrabStarting(); + + if (startingGrab != GrabTypes.None) + { + SpawnAndAttachObject( hand, GrabTypes.Scripted); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + if ( !justPickedUpItem && requireGrabActionToTake && showTriggerHint ) + { + hand.HideGrabHint(); + } + + justPickedUpItem = false; + } + + + //------------------------------------------------- + private void RemoveMatchingItemsFromHandStack( ItemPackage package, Hand hand ) + { + if (hand == null) + return; + + for ( int i = 0; i < hand.AttachedObjects.Count; i++ ) + { + ItemPackageReference packageReference = hand.AttachedObjects[i].attachedObject.GetComponent(); + if ( packageReference != null ) + { + ItemPackage attachedObjectItemPackage = packageReference.itemPackage; + if ( ( attachedObjectItemPackage != null ) && ( attachedObjectItemPackage == package ) ) + { + GameObject detachedItem = hand.AttachedObjects[i].attachedObject; + hand.DetachObject( detachedItem ); + } + } + } + } + + + //------------------------------------------------- + private void RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType packageType, Hand hand ) + { + for ( int i = 0; i < hand.AttachedObjects.Count; i++ ) + { + ItemPackageReference packageReference = hand.AttachedObjects[i].attachedObject.GetComponent(); + if ( packageReference != null ) + { + if ( packageReference.itemPackage.packageType == packageType ) + { + GameObject detachedItem = hand.AttachedObjects[i].attachedObject; + hand.DetachObject( detachedItem ); + } + } + } + } + + + //------------------------------------------------- + private void SpawnAndAttachObject( Hand hand, GrabTypes grabType ) + { + if ( hand.otherHand != null ) + { + //If the other hand has this item package, take it back from the other hand + ItemPackage otherHandItemPackage = GetAttachedItemPackage( hand.otherHand ); + if ( otherHandItemPackage == itemPackage ) + { + TakeBackItem( hand.otherHand ); + } + } + + if ( showTriggerHint ) + { + hand.HideGrabHint(); + } + + if ( itemPackage.otherHandItemPrefab != null ) + { + if ( hand.otherHand.hoverLocked ) + { + Debug.Log( "[SteamVR Interaction] Not attaching objects because other hand is hoverlocked and we can't deliver both items." ); + return; + } + } + + // if we're trying to spawn a one-handed item, remove one and two-handed items from this hand and two-handed items from both hands + if ( itemPackage.packageType == ItemPackage.ItemPackageType.OneHanded ) + { + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand.otherHand ); + } + + // if we're trying to spawn a two-handed item, remove one and two-handed items from both hands + if ( itemPackage.packageType == ItemPackage.ItemPackageType.TwoHanded ) + { + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand.otherHand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand.otherHand ); + } + + spawnedItem = GameObject.Instantiate( itemPackage.itemPrefab ); + spawnedItem.SetActive( true ); + hand.AttachObject( spawnedItem, grabType, attachmentFlags ); + + if ( ( itemPackage.otherHandItemPrefab != null ) && ( hand.otherHand.isActive ) ) + { + GameObject otherHandObjectToAttach = GameObject.Instantiate( itemPackage.otherHandItemPrefab ); + otherHandObjectToAttach.SetActive( true ); + hand.otherHand.AttachObject( otherHandObjectToAttach, grabType, attachmentFlags ); + } + + itemIsSpawned = true; + + justPickedUpItem = true; + + if ( takeBackItem ) + { + useFadedPreview = true; + pickupEvent.Invoke(); + CreatePreviewObject(); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta new file mode 100644 index 00000000..8a4b4d57 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43e53a985809f0949b9a42cc2a6888c9 +timeCreated: 1544852179 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs new file mode 100644 index 00000000..050295b5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs @@ -0,0 +1,64 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Animation that moves based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAnimation : MonoBehaviour + { + public LinearMapping linearMapping; + public new Animation animation; + + private AnimationState animState; + private float animLength; + private float lastValue; + + + //------------------------------------------------- + void Awake() + { + if ( animation == null ) + { + animation = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + //We're assuming the animation has a single clip, and that's the one we're + //going to scrub with the linear mapping. + animation.playAutomatically = true; + animState = animation[animation.clip.name]; + + //If the anim state's (i.e. clip's) wrap mode is Once (the default) or ClampForever, + //Unity will automatically stop playing the anim, regardless of subsequent changes + //to animState.time. Thus, we set the wrap mode to PingPong. + animState.wrapMode = WrapMode.PingPong; + animState.speed = 0; + animLength = animState.length; + } + + + //------------------------------------------------- + void Update() + { + float value = linearMapping.value; + + //No need to set the anim if our value hasn't changed. + if ( value != lastValue ) + { + animState.time = value * animLength; + } + + lastValue = value; + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta new file mode 100644 index 00000000..ff82916d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 49a60120b932b59409171f5ff611b639 +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs new file mode 100644 index 00000000..04b69ac8 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs @@ -0,0 +1,59 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Animator whose speed is set based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAnimator : MonoBehaviour + { + public LinearMapping linearMapping; + public Animator animator; + + private float currentLinearMapping = float.NaN; + private int framesUnchanged = 0; + + + //------------------------------------------------- + void Awake() + { + if ( animator == null ) + { + animator = GetComponent(); + } + + animator.speed = 0.0f; + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( currentLinearMapping != linearMapping.value ) + { + currentLinearMapping = linearMapping.value; + animator.enabled = true; + animator.Play( 0, 0, currentLinearMapping ); + framesUnchanged = 0; + } + else + { + framesUnchanged++; + if ( framesUnchanged > 2 ) + { + animator.enabled = false; + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta new file mode 100644 index 00000000..2c008066 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 634b98c3ef8bc6d4f834f80a4613a4a4 +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs new file mode 100644 index 00000000..2e4fad6f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs @@ -0,0 +1,58 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Changes the pitch of this audio source based on a linear mapping +// and a curve +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAudioPitch : MonoBehaviour + { + public LinearMapping linearMapping; + public AnimationCurve pitchCurve; + public float minPitch; + public float maxPitch; + public bool applyContinuously = true; + + private AudioSource audioSource; + + + //------------------------------------------------- + void Awake() + { + if ( audioSource == null ) + { + audioSource = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( applyContinuously ) + { + Apply(); + } + } + + + //------------------------------------------------- + private void Apply() + { + float y = pitchCurve.Evaluate( linearMapping.value ); + + audioSource.pitch = Mathf.Lerp( minPitch, maxPitch, y ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta new file mode 100644 index 00000000..7881905a --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb07dbf09f9933e49b22c82d8428c53b +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs new file mode 100644 index 00000000..af1740b7 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs @@ -0,0 +1,51 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Set the blend shape weight based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearBlendshape : MonoBehaviour + { + public LinearMapping linearMapping; + public SkinnedMeshRenderer skinnedMesh; + + private float lastValue; + + + //------------------------------------------------- + void Awake() + { + if ( skinnedMesh == null ) + { + skinnedMesh = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + float value = linearMapping.value; + + //No need to set the blend if our value hasn't changed. + if ( value != lastValue ) + { + float blendValue = Util.RemapNumberClamped( value, 0f, 1f, 1f, 100f ); + skinnedMesh.SetBlendShapeWeight( 0, blendValue ); + } + + lastValue = value; + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta new file mode 100644 index 00000000..6148c87f --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5a3622562855c9a40a14846ffdc8bfe4 +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs new file mode 100644 index 00000000..a59c9f4c --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs @@ -0,0 +1,41 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Move the position of this object based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearDisplacement : MonoBehaviour + { + public Vector3 displacement; + public LinearMapping linearMapping; + + private Vector3 initialPosition; + + //------------------------------------------------- + void Start() + { + initialPosition = transform.localPosition; + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( linearMapping ) + { + transform.localPosition = initialPosition + linearMapping.value * displacement; + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta new file mode 100644 index 00000000..1b7ecbfe --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13d876e5d485004448f3e7b57eece9ab +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs new file mode 100644 index 00000000..5e4f8e22 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs @@ -0,0 +1,147 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Drives a linear mapping based on position between 2 positions +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class LinearDrive : MonoBehaviour + { + public Transform startPosition; + public Transform endPosition; + public LinearMapping linearMapping; + public bool repositionGameObject = true; + public bool maintainMomemntum = true; + public float momemtumDampenRate = 5.0f; + + protected Hand.AttachmentFlags attachmentFlags = Hand.AttachmentFlags.DetachFromOtherHand; + + protected float initialMappingOffset; + protected int numMappingChangeSamples = 5; + protected float[] mappingChangeSamples; + protected float prevMapping = 0.0f; + protected float mappingChangeRate; + protected int sampleCount = 0; + + protected Interactable interactable; + + + protected virtual void Awake() + { + mappingChangeSamples = new float[numMappingChangeSamples]; + interactable = GetComponent(); + } + + protected virtual void Start() + { + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = gameObject.AddComponent(); + } + + initialMappingOffset = linearMapping.value; + + if ( repositionGameObject ) + { + UpdateLinearMapping( transform ); + } + } + + protected virtual void HandHoverUpdate( Hand hand ) + { + GrabTypes startingGrabType = hand.GetGrabStarting(); + + if (interactable.attachedToHand == null && startingGrabType != GrabTypes.None) + { + initialMappingOffset = linearMapping.value - CalculateLinearMapping( hand.transform ); + sampleCount = 0; + mappingChangeRate = 0.0f; + + hand.AttachObject(gameObject, startingGrabType, attachmentFlags); + } + } + + protected virtual void HandAttachedUpdate(Hand hand) + { + UpdateLinearMapping(hand.transform); + + if (hand.IsGrabEnding(this.gameObject)) + { + hand.DetachObject(gameObject); + } + } + + protected virtual void OnDetachedFromHand(Hand hand) + { + CalculateMappingChangeRate(); + } + + + protected void CalculateMappingChangeRate() + { + //Compute the mapping change rate + mappingChangeRate = 0.0f; + int mappingSamplesCount = Mathf.Min( sampleCount, mappingChangeSamples.Length ); + if ( mappingSamplesCount != 0 ) + { + for ( int i = 0; i < mappingSamplesCount; ++i ) + { + mappingChangeRate += mappingChangeSamples[i]; + } + mappingChangeRate /= mappingSamplesCount; + } + } + + protected void UpdateLinearMapping( Transform updateTransform ) + { + prevMapping = linearMapping.value; + linearMapping.value = Mathf.Clamp01( initialMappingOffset + CalculateLinearMapping( updateTransform ) ); + + mappingChangeSamples[sampleCount % mappingChangeSamples.Length] = ( 1.0f / Time.deltaTime ) * ( linearMapping.value - prevMapping ); + sampleCount++; + + if ( repositionGameObject ) + { + transform.position = Vector3.Lerp( startPosition.position, endPosition.position, linearMapping.value ); + } + } + + protected float CalculateLinearMapping( Transform updateTransform ) + { + Vector3 direction = endPosition.position - startPosition.position; + float length = direction.magnitude; + direction.Normalize(); + + Vector3 displacement = updateTransform.position - startPosition.position; + + return Vector3.Dot( displacement, direction ) / length; + } + + + protected virtual void Update() + { + if ( maintainMomemntum && mappingChangeRate != 0.0f ) + { + //Dampen the mapping change rate and apply it to the mapping + mappingChangeRate = Mathf.Lerp( mappingChangeRate, 0.0f, momemtumDampenRate * Time.deltaTime ); + linearMapping.value = Mathf.Clamp01( linearMapping.value + ( mappingChangeRate * Time.deltaTime ) ); + + if ( repositionGameObject ) + { + transform.position = Vector3.Lerp( startPosition.position, endPosition.position, linearMapping.value ); + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta new file mode 100644 index 00000000..12006272 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c81a27fd18a29444be92481fe681f4b +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs new file mode 100644 index 00000000..ec7cc437 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: A linear mapping value that is used by other components +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearMapping : MonoBehaviour + { + public float value; + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta new file mode 100644 index 00000000..96f4c0a9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 46f8e9e70f68ee3418ad85992778c116 +timeCreated: 1544852180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs new file mode 100644 index 00000000..01e2de81 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs @@ -0,0 +1,53 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Basic throwable object +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + public class ModalThrowable : Throwable + { + [Tooltip("The local point which acts as a positional and rotational offset to use while held with a grip type grab")] + public Transform gripOffset; + + [Tooltip("The local point which acts as a positional and rotational offset to use while held with a pinch type grab")] + public Transform pinchOffset; + + protected override void HandHoverUpdate(Hand hand) + { + GrabTypes startingGrabType = hand.GetGrabStarting(); + + if (startingGrabType != GrabTypes.None) + { + if (startingGrabType == GrabTypes.Pinch) + { + hand.AttachObject(gameObject, startingGrabType, attachmentFlags, pinchOffset); + } + else if (startingGrabType == GrabTypes.Grip) + { + hand.AttachObject(gameObject, startingGrabType, attachmentFlags, gripOffset); + } + else + { + hand.AttachObject(gameObject, startingGrabType, attachmentFlags, attachmentOffset); + } + + hand.HideGrabHint(); + } + } + protected override void HandAttachedUpdate(Hand hand) + { + if (interactable.skeletonPoser != null) + { + interactable.skeletonPoser.SetBlendingBehaviourEnabled("PinchPose", hand.currentAttachedObjectInfo.Value.grabbedWithType == GrabTypes.Pinch); + } + + base.HandAttachedUpdate(hand); + } + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs.meta new file mode 100644 index 00000000..ecff67fd --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/ModalThrowable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9172bbb2e6dd7e4a86c0d1ea19b7e49 +timeCreated: 1544852181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs new file mode 100644 index 00000000..6b8771b2 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs @@ -0,0 +1,216 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Plays one of many audio files with possible randomized parameters +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( AudioSource ) )] + public class PlaySound : MonoBehaviour + { + [Tooltip( "List of audio clips to play." )] + public AudioClip[] waveFile; + [Tooltip( "Stops the currently playing clip in the audioSource. Otherwise clips will overlap/mix." )] + public bool stopOnPlay; + [Tooltip( "After the audio clip finishes playing, disable the game object the sound is on." )] + public bool disableOnEnd; + [Tooltip( "Loop the sound after the wave file variation has been chosen." )] + public bool looping; + [Tooltip( "If the sound is looping and updating it's position every frame, stop the sound at the end of the wav/clip length. " )] + public bool stopOnEnd; + [Tooltip( "Start a wave file playing on awake, but after a delay." )] + public bool playOnAwakeWithDelay; + + [Header ( "Random Volume" )] + public bool useRandomVolume = true; + [Tooltip( "Minimum volume that will be used when randomly set." )] + [Range( 0.0f, 1.0f )] + public float volMin = 1.0f; + [Tooltip( "Maximum volume that will be used when randomly set." )] + [Range( 0.0f, 1.0f )] + public float volMax = 1.0f; + + [Header ( "Random Pitch" )] + [Tooltip( "Use min and max random pitch levels when playing sounds." )] + public bool useRandomPitch = true; + [Tooltip( "Minimum pitch that will be used when randomly set." )] + [Range( -3.0f, 3.0f )] + public float pitchMin = 1.0f; + [Tooltip( "Maximum pitch that will be used when randomly set." )] + [Range( -3.0f, 3.0f )] + public float pitchMax = 1.0f; + + [Header( "Random Time" )] + [Tooltip( "Use Retrigger Time to repeat the sound within a time range" )] + public bool useRetriggerTime = false; + [Tooltip( "Inital time before the first repetion starts" )] + [Range( 0.0f, 360.0f )] + public float timeInitial = 0.0f; + [Tooltip( "Minimum time that will pass before the sound is retriggered" )] + [Range( 0.0f, 360.0f )] + public float timeMin = 0.0f; + [Tooltip( "Maximum pitch that will be used when randomly set." )] + [Range( 0.0f, 360.0f )] + public float timeMax = 0.0f; + + [Header ( "Random Silence" )] + [Tooltip( "Use Retrigger Time to repeat the sound within a time range" )] + public bool useRandomSilence = false; + [Tooltip( "Percent chance that the wave file will not play" )] + [Range( 0.0f, 1.0f )] + public float percentToNotPlay = 0.0f; + + [Header( "Delay Time" )] + [Tooltip( "Time to offset playback of sound" )] + public float delayOffsetTime = 0.0f; + + + private AudioSource audioSource; + private AudioClip clip; + + //------------------------------------------------- + void Awake() + { + audioSource = GetComponent(); + clip = audioSource.clip; + + // audio source play on awake is true, just play the PlaySound immediately + if ( audioSource.playOnAwake ) + { + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + else + Play(); + } + + // if playOnAwake is false, but the playOnAwakeWithDelay on the PlaySound is true, play the sound on away but with a delay + else if ( !audioSource.playOnAwake && playOnAwakeWithDelay ) + { + PlayWithDelay( delayOffsetTime ); + + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + } + + // in the case where both playOnAwake and playOnAwakeWithDelay are both set to true, just to the same as above, play the sound but with a delay + else if ( audioSource.playOnAwake && playOnAwakeWithDelay ) + { + PlayWithDelay( delayOffsetTime ); + + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + } + } + + + //------------------------------------------------- + // Play a random clip from those available + //------------------------------------------------- + public void Play() + { + if ( looping ) + { + PlayLooping(); + + } + + else PlayOneShotSound(); + } + + + //------------------------------------------------- + public void PlayWithDelay( float delayTime ) + { + if ( looping ) + Invoke( "PlayLooping", delayTime ); + else + Invoke( "PlayOneShotSound", delayTime ); + } + + + //------------------------------------------------- + // Play random wave clip on audiosource as a one shot + //------------------------------------------------- + public AudioClip PlayOneShotSound() + { + if ( !this.audioSource.isActiveAndEnabled ) + return null; + + SetAudioSource(); + if ( this.stopOnPlay ) + audioSource.Stop(); + if ( this.disableOnEnd ) + Invoke( "Disable", clip.length ); + this.audioSource.PlayOneShot( this.clip ); + return this.clip; + } + + + //------------------------------------------------- + public AudioClip PlayLooping() + { + // get audio source properties, and do any special randomizations + SetAudioSource(); + + // if the audio source has forgotten to be set to looping, set it to looping + if ( !audioSource.loop ) + audioSource.loop = true; + + // play the clip in the audio source, all the meanwhile updating it's location + this.audioSource.Play(); + + // if disable on end is checked, stop playing the wave file after the first loop has finished. + if ( stopOnEnd ) + Invoke( "Stop", audioSource.clip.length ); + return this.clip; + } + + + //------------------------------------------------- + public void Disable() + { + gameObject.SetActive( false ); + } + + + //------------------------------------------------- + public void Stop() + { + audioSource.Stop(); + } + + + //------------------------------------------------- + private void SetAudioSource() + { + if ( this.useRandomVolume ) + { + //randomly apply a volume between the volume min max + this.audioSource.volume = Random.Range( this.volMin, this.volMax ); + + if ( useRandomSilence && ( Random.Range( 0, 1 ) < percentToNotPlay ) ) + { + this.audioSource.volume = 0; + } + } + + if ( this.useRandomPitch ) + { + //randomly apply a pitch between the pitch min max + this.audioSource.pitch = Random.Range( this.pitchMin, this.pitchMax ); + } + + if ( this.waveFile.Length > 0 ) + { + // randomly assign a wave file from the array into the audioSource clip property + audioSource.clip = this.waveFile[Random.Range( 0, waveFile.Length )]; + clip = audioSource.clip; + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta new file mode 100644 index 00000000..8af09738 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a125d9df683e2a49b12babced273360 +timeCreated: 1544852181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs new file mode 100644 index 00000000..b648b17e --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs @@ -0,0 +1,416 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Player interface used to query HMD transforms and VR hands +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + // Singleton representing the local VR player/user, with methods for getting + // the player's hands, head, tracking origin, and guesses for various properties. + //------------------------------------------------------------------------- + public class Player : MonoBehaviour + { + [Tooltip( "Virtual transform corresponding to the meatspace tracking origin. Devices are tracked relative to this." )] + public Transform trackingOriginTransform; + + [Tooltip( "List of possible transforms for the head/HMD, including the no-SteamVR fallback camera." )] + public Transform[] hmdTransforms; + + [Tooltip( "List of possible Hands, including no-SteamVR fallback Hands." )] + public Hand[] hands; + + [Tooltip( "Reference to the physics collider that follows the player's HMD position." )] + public Collider headCollider; + + [Tooltip( "These objects are enabled when SteamVR is available" )] + public GameObject rigSteamVR; + + [Tooltip( "These objects are enabled when SteamVR is not available, or when the user toggles out of VR" )] + public GameObject rig2DFallback; + + [Tooltip( "The audio listener for this player" )] + public Transform audioListener; + + [Tooltip("This action lets you know when the player has placed the headset on their head")] + public SteamVR_Action_Boolean headsetOnHead = SteamVR_Input.GetBooleanAction("HeadsetOnHead"); + + public bool allowToggleTo2D = true; + + + //------------------------------------------------- + // Singleton instance of the Player. Only one can exist at a time. + //------------------------------------------------- + private static Player _instance; + public static Player instance + { + get + { + if ( _instance == null ) + { + _instance = FindObjectOfType(); + } + return _instance; + } + } + + + //------------------------------------------------- + // Get the number of active Hands. + //------------------------------------------------- + public int handCount + { + get + { + int count = 0; + for ( int i = 0; i < hands.Length; i++ ) + { + if ( hands[i].gameObject.activeInHierarchy ) + { + count++; + } + } + return count; + } + } + + + //------------------------------------------------- + // Get the i-th active Hand. + // + // i - Zero-based index of the active Hand to get + //------------------------------------------------- + public Hand GetHand( int i ) + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( i > 0 ) + { + i--; + continue; + } + + return hands[j]; + } + + return null; + } + + + //------------------------------------------------- + public Hand leftHand + { + get + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( hands[j].handType != SteamVR_Input_Sources.LeftHand) + { + continue; + } + + return hands[j]; + } + + return null; + } + } + + + //------------------------------------------------- + public Hand rightHand + { + get + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( hands[j].handType != SteamVR_Input_Sources.RightHand) + { + continue; + } + + return hands[j]; + } + + return null; + } + } + + //------------------------------------------------- + // Get Player scale. Assumes it is scaled equally on all axes. + //------------------------------------------------- + + public float scale + { + get + { + return transform.lossyScale.x; + } + } + + + //------------------------------------------------- + // Get the HMD transform. This might return the fallback camera transform if SteamVR is unavailable or disabled. + //------------------------------------------------- + public Transform hmdTransform + { + get + { + if (hmdTransforms != null) + { + for (int i = 0; i < hmdTransforms.Length; i++) + { + if (hmdTransforms[i].gameObject.activeInHierarchy) + return hmdTransforms[i]; + } + } + return null; + } + } + + + //------------------------------------------------- + // Height of the eyes above the ground - useful for estimating player height. + //------------------------------------------------- + public float eyeHeight + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + Vector3 eyeOffset = Vector3.Project( hmd.position - trackingOriginTransform.position, trackingOriginTransform.up ); + return eyeOffset.magnitude / trackingOriginTransform.lossyScale.x; + } + return 0.0f; + } + } + + + //------------------------------------------------- + // Guess for the world-space position of the player's feet, directly beneath the HMD. + //------------------------------------------------- + public Vector3 feetPositionGuess + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + return trackingOriginTransform.position + Vector3.ProjectOnPlane( hmd.position - trackingOriginTransform.position, trackingOriginTransform.up ); + } + return trackingOriginTransform.position; + } + } + + + //------------------------------------------------- + // Guess for the world-space direction of the player's hips/torso. This is effectively just the gaze direction projected onto the floor plane. + //------------------------------------------------- + public Vector3 bodyDirectionGuess + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + Vector3 direction = Vector3.ProjectOnPlane( hmd.forward, trackingOriginTransform.up ); + if ( Vector3.Dot( hmd.up, trackingOriginTransform.up ) < 0.0f ) + { + // The HMD is upside-down. Either + // -The player is bending over backwards + // -The player is bent over looking through their legs + direction = -direction; + } + return direction; + } + return trackingOriginTransform.forward; + } + } + + + //------------------------------------------------- + private void Awake() + { + if ( trackingOriginTransform == null ) + { + trackingOriginTransform = this.transform; + } + } + + + //------------------------------------------------- + private IEnumerator Start() + { + _instance = this; + + while (SteamVR.initializedState == SteamVR.InitializedStates.None || SteamVR.initializedState == SteamVR.InitializedStates.Initializing) + yield return null; + + if ( SteamVR.instance != null ) + { + ActivateRig( rigSteamVR ); + } + else + { +#if !HIDE_DEBUG_UI + ActivateRig( rig2DFallback ); +#endif + } + } + + protected virtual void Update() + { + if (SteamVR.initializedState != SteamVR.InitializedStates.InitializeSuccess) + return; + + if (headsetOnHead != null) + { + if (headsetOnHead.GetStateDown(SteamVR_Input_Sources.Head)) + { + Debug.Log("SteamVR Interaction System Headset placed on head"); + } + else if (headsetOnHead.GetStateUp(SteamVR_Input_Sources.Head)) + { + Debug.Log("SteamVR Interaction System Headset removed"); + } + } + } + + //------------------------------------------------- + void OnDrawGizmos() + { + if ( this != instance ) + { + return; + } + + //NOTE: These gizmo icons don't work in the plugin since the icons need to exist in a specific "Gizmos" + // folder in your Asset tree. These icons are included under Core/Icons. Moving them into a + // "Gizmos" folder should make them work again. + + Gizmos.color = Color.white; + Gizmos.DrawIcon( feetPositionGuess, "vr_interaction_system_feet.png" ); + + Gizmos.color = Color.cyan; + Gizmos.DrawLine( feetPositionGuess, feetPositionGuess + trackingOriginTransform.up * eyeHeight ); + + // Body direction arrow + Gizmos.color = Color.blue; + Vector3 bodyDirection = bodyDirectionGuess; + Vector3 bodyDirectionTangent = Vector3.Cross( trackingOriginTransform.up, bodyDirection ); + Vector3 startForward = feetPositionGuess + trackingOriginTransform.up * eyeHeight * 0.75f; + Vector3 endForward = startForward + bodyDirection * 0.33f; + Gizmos.DrawLine( startForward, endForward ); + Gizmos.DrawLine( endForward, endForward - 0.033f * ( bodyDirection + bodyDirectionTangent ) ); + Gizmos.DrawLine( endForward, endForward - 0.033f * ( bodyDirection - bodyDirectionTangent ) ); + + Gizmos.color = Color.red; + int count = handCount; + for ( int i = 0; i < count; i++ ) + { + Hand hand = GetHand( i ); + + if ( hand.handType == SteamVR_Input_Sources.LeftHand) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_left_hand.png" ); + } + else if ( hand.handType == SteamVR_Input_Sources.RightHand) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_right_hand.png" ); + } + else + { + /* + Hand.HandType guessHandType = hand.currentHandType; + + if ( guessHandType == Hand.HandType.Left ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_left_hand_question.png" ); + } + else if ( guessHandType == Hand.HandType.Right ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_right_hand_question.png" ); + } + else + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_unknown_hand.png" ); + } + */ + } + } + } + + + //------------------------------------------------- + public void Draw2DDebug() + { + if ( !allowToggleTo2D ) + return; + + if ( !SteamVR.active ) + return; + + int width = 100; + int height = 25; + int left = Screen.width / 2 - width / 2; + int top = Screen.height - height - 10; + + string text = ( rigSteamVR.activeSelf ) ? "2D Debug" : "VR"; + + if ( GUI.Button( new Rect( left, top, width, height ), text ) ) + { + if ( rigSteamVR.activeSelf ) + { + ActivateRig( rig2DFallback ); + } + else + { + ActivateRig( rigSteamVR ); + } + } + } + + + //------------------------------------------------- + private void ActivateRig( GameObject rig ) + { + rigSteamVR.SetActive( rig == rigSteamVR ); + rig2DFallback.SetActive( rig == rig2DFallback ); + + if ( audioListener ) + { + audioListener.transform.parent = hmdTransform; + audioListener.transform.localPosition = Vector3.zero; + audioListener.transform.localRotation = Quaternion.identity; + } + } + + + //------------------------------------------------- + public void PlayerShotSelf() + { + //Do something appropriate here + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta new file mode 100644 index 00000000..b48e15ed --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 202a6e24b48d1684398409c47161adcb +timeCreated: 1533337659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31650 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs new file mode 100644 index 00000000..1121e2b9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs @@ -0,0 +1,429 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== + +using UnityEngine; +using System.Collections; +using System; + +namespace Valve.VR.InteractionSystem +{ + public class RenderModel : MonoBehaviour + { + public GameObject handPrefab; + protected GameObject handInstance; + protected Renderer[] handRenderers; + public bool displayHandByDefault = true; + protected SteamVR_Behaviour_Skeleton handSkeleton; + protected Animator handAnimator; + + protected string animatorParameterStateName = "AnimationState"; + protected int handAnimatorStateId = -1; + + [Space] + + public GameObject controllerPrefab; + protected GameObject controllerInstance; + protected Renderer[] controllerRenderers; + protected SteamVR_RenderModel controllerRenderModel; + public bool displayControllerByDefault = true; + protected Material delayedSetMaterial; + + public event Action onControllerLoaded; + + protected SteamVR_Events.Action renderModelLoadedAction; + + protected SteamVR_Input_Sources inputSource; + + protected void Awake() + { + renderModelLoadedAction = SteamVR_Events.RenderModelLoadedAction(OnRenderModelLoaded); + + InitializeHand(); + + InitializeController(); + } + + protected void InitializeHand() + { + if (handPrefab != null) + { + handInstance = GameObject.Instantiate(handPrefab); + handInstance.transform.parent = this.transform; + handInstance.transform.localPosition = Vector3.zero; + handInstance.transform.localRotation = Quaternion.identity; + handInstance.transform.localScale = handPrefab.transform.localScale; + handSkeleton = handInstance.GetComponent(); + handSkeleton.origin = Player.instance.trackingOriginTransform; + handSkeleton.updatePose = false; + handSkeleton.skeletonAction.onActiveChange += OnSkeletonActiveChange; + + handRenderers = handInstance.GetComponentsInChildren(); + if (displayHandByDefault == false) + SetHandVisibility(false); + + handAnimator = handInstance.GetComponentInChildren(); + + if (handSkeleton.skeletonAction.activeBinding == false && handSkeleton.fallbackPoser == null) + { + Debug.LogWarning("Skeleton action: " + handSkeleton.skeletonAction.GetPath() + " is not bound. Your controller may not support SteamVR Skeleton Input. " + + "Please add a fallback skeleton poser to your skeleton if you want hands to be visible"); + DestroyHand(); + } + } + } + + protected void InitializeController() + { + if (controllerPrefab != null) + { + controllerInstance = GameObject.Instantiate(controllerPrefab); + controllerInstance.transform.parent = this.transform; + controllerInstance.transform.localPosition = Vector3.zero; + controllerInstance.transform.localRotation = Quaternion.identity; + controllerInstance.transform.localScale = controllerPrefab.transform.localScale; + controllerRenderModel = controllerInstance.GetComponent(); + } + } + + protected virtual void DestroyHand() + { + if (handSkeleton != null) + handSkeleton.skeletonAction.onActiveChange -= OnSkeletonActiveChange; + + if (handInstance != null) + { + Destroy(handInstance); + handRenderers = null; + handInstance = null; + handSkeleton = null; + handAnimator = null; + } + } + + protected virtual void OnSkeletonActiveChange(SteamVR_Action_Skeleton changedAction, bool newState) + { + if (newState) + { + InitializeHand(); + } + else + { + DestroyHand(); + } + } + + protected void OnEnable() + { + renderModelLoadedAction.enabled = true; + } + + protected void OnDisable() + { + renderModelLoadedAction.enabled = false; + } + + protected void OnDestroy() + { + DestroyHand(); + } + + public SteamVR_Behaviour_Skeleton GetSkeleton() + { + return handSkeleton; + } + + public virtual void SetInputSource(SteamVR_Input_Sources newInputSource) + { + inputSource = newInputSource; + if (controllerRenderModel != null) + controllerRenderModel.SetInputSource(inputSource); + } + + public virtual void OnHandInitialized(int deviceIndex) + { + controllerRenderModel.SetInputSource(inputSource); + controllerRenderModel.SetDeviceIndex(deviceIndex); + } + + public void MatchHandToTransform(Transform match) + { + if (handInstance != null) + { + handInstance.transform.position = match.transform.position; + handInstance.transform.rotation = match.transform.rotation; + } + } + + public void SetHandPosition(Vector3 newPosition) + { + if (handInstance != null) + { + handInstance.transform.position = newPosition; + } + } + + public void SetHandRotation(Quaternion newRotation) + { + if (handInstance != null) + { + handInstance.transform.rotation = newRotation; + } + } + + public Vector3 GetHandPosition() + { + if (handInstance != null) + { + return handInstance.transform.position; + } + + return Vector3.zero; + } + + public Quaternion GetHandRotation() + { + if (handInstance != null) + { + return handInstance.transform.rotation; + } + + return Quaternion.identity; + } + + private void OnRenderModelLoaded(SteamVR_RenderModel loadedRenderModel, bool success) + { + if (controllerRenderModel == loadedRenderModel) + { + controllerRenderers = controllerInstance.GetComponentsInChildren(); + if (displayControllerByDefault == false) + SetControllerVisibility(false); + + if (delayedSetMaterial != null) + SetControllerMaterial(delayedSetMaterial); + + if (onControllerLoaded != null) + onControllerLoaded.Invoke(); + } + } + + public void SetVisibility(bool state, bool overrideDefault = false) + { + if (state == false || displayControllerByDefault || overrideDefault) + SetControllerVisibility(state); + + if (state == false || displayHandByDefault || overrideDefault) + SetHandVisibility(state); + } + + public void Show(bool overrideDefault = false) + { + SetVisibility(true, overrideDefault); + } + + public void Hide() + { + SetVisibility(false); + } + + public virtual void SetMaterial(Material material) + { + SetControllerMaterial(material); + SetHandMaterial(material); + } + + public void SetControllerMaterial(Material material) + { + if (controllerRenderers == null) + { + delayedSetMaterial = material; + return; + } + + for (int rendererIndex = 0; rendererIndex < controllerRenderers.Length; rendererIndex++) + { + controllerRenderers[rendererIndex].material = material; + } + } + + public void SetHandMaterial(Material material) + { + for (int rendererIndex = 0; rendererIndex < handRenderers.Length; rendererIndex++) + { + handRenderers[rendererIndex].material = material; + } + } + + public void SetControllerVisibility(bool state, bool permanent = false) + { + if (permanent) + displayControllerByDefault = state; + + if (controllerRenderers == null) + return; + + for (int rendererIndex = 0; rendererIndex < controllerRenderers.Length; rendererIndex++) + { + controllerRenderers[rendererIndex].enabled = state; + } + } + + public void SetHandVisibility(bool state, bool permanent = false) + { + if (permanent) + displayHandByDefault = state; + + if (handRenderers == null) + return; + + for (int rendererIndex = 0; rendererIndex < handRenderers.Length; rendererIndex++) + { + handRenderers[rendererIndex].enabled = state; + } + } + + public bool IsHandVisibile() + { + if (handRenderers == null) + return false; + + for (int rendererIndex = 0; rendererIndex < handRenderers.Length; rendererIndex++) + { + if (handRenderers[rendererIndex].enabled) + return true; + } + + return false; + } + + public bool IsControllerVisibile() + { + if (controllerRenderers == null) + return false; + + for (int rendererIndex = 0; rendererIndex < controllerRenderers.Length; rendererIndex++) + { + if (controllerRenderers[rendererIndex].enabled) + return true; + } + + return false; + } + + public Transform GetBone(int boneIndex) + { + if (handSkeleton != null) + { + return handSkeleton.GetBone(boneIndex); + } + + return null; + } + + public Vector3 GetBonePosition(int boneIndex, bool local = false) + { + if (handSkeleton != null) + { + return handSkeleton.GetBonePosition(boneIndex, local); + } + + return Vector3.zero; + } + + public Vector3 GetControllerPosition(string componentName = null) + { + if (controllerRenderModel != null) + return controllerRenderModel.GetComponentTransform(componentName).position; + + return Vector3.zero; + } + + public Quaternion GetBoneRotation(int boneIndex, bool local = false) + { + if (handSkeleton != null) + { + return handSkeleton.GetBoneRotation(boneIndex, local); + } + + return Quaternion.identity; + } + + + public void SetSkeletonRangeOfMotion(EVRSkeletalMotionRange newRangeOfMotion, float blendOverSeconds = 0.1f) + { + if (handSkeleton != null) + { + handSkeleton.SetRangeOfMotion(newRangeOfMotion, blendOverSeconds); + } + } + + public EVRSkeletalMotionRange GetSkeletonRangeOfMotion + { + get + { + if (handSkeleton != null) + return handSkeleton.rangeOfMotion; + else + return EVRSkeletalMotionRange.WithController; + } + } + + public void SetTemporarySkeletonRangeOfMotion(SkeletalMotionRangeChange temporaryRangeOfMotionChange, float blendOverSeconds = 0.1f) + { + if (handSkeleton != null) + { + handSkeleton.SetTemporaryRangeOfMotion((EVRSkeletalMotionRange)temporaryRangeOfMotionChange, blendOverSeconds); + } + } + + public void ResetTemporarySkeletonRangeOfMotion(float blendOverSeconds = 0.1f) + { + if (handSkeleton != null) + { + handSkeleton.ResetTemporaryRangeOfMotion(blendOverSeconds); + } + } + + public void SetAnimationState(int stateValue) + { + if (handSkeleton != null) + { + if (handSkeleton.isBlending == false) + handSkeleton.BlendToAnimation(); + + if (CheckAnimatorInit()) + handAnimator.SetInteger(handAnimatorStateId, stateValue); + } + } + + public void StopAnimation() + { + if (handSkeleton != null) + { + if (handSkeleton.isBlending == false) + handSkeleton.BlendToSkeleton(); + + if (CheckAnimatorInit()) + handAnimator.SetInteger(handAnimatorStateId, 0); + } + } + + private bool CheckAnimatorInit() + { + if (handAnimatorStateId == -1 && handAnimator != null) + { + if (handAnimator.gameObject.activeInHierarchy && handAnimator.isInitialized) + { + AnimatorControllerParameter[] parameters = handAnimator.parameters; + for (int parameterIndex = 0; parameterIndex < parameters.Length; parameterIndex++) + { + if (string.Equals(parameters[parameterIndex].name, animatorParameterStateName, StringComparison.CurrentCultureIgnoreCase)) + handAnimatorStateId = parameters[parameterIndex].nameHash; + } + } + } + + return handAnimatorStateId != -1 && handAnimator != null && handAnimator.isInitialized; + } + + + } +} \ No newline at end of file diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs.meta new file mode 100644 index 00000000..d3e7f575 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/RenderModel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 847a4fd831847974bb8d16b469b643e3 +timeCreated: 1544852181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs new file mode 100644 index 00000000..3d18de13 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs @@ -0,0 +1,151 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Uses the see thru renderer while attached to hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SeeThru : MonoBehaviour + { + public Material seeThruMaterial; + + private GameObject seeThru; + private Interactable interactable; + private Renderer sourceRenderer; + private Renderer destRenderer; + + + //------------------------------------------------- + void Awake() + { + interactable = GetComponentInParent(); + + // + // Create child game object for see thru renderer + // + seeThru = new GameObject( "_see_thru" ); + seeThru.transform.parent = transform; + seeThru.transform.localPosition = Vector3.zero; + seeThru.transform.localRotation = Quaternion.identity; + seeThru.transform.localScale = Vector3.one; + + // + // Copy mesh filter + // + MeshFilter sourceMeshFilter = GetComponent(); + if ( sourceMeshFilter != null ) + { + MeshFilter destMeshFilter = seeThru.AddComponent(); + destMeshFilter.sharedMesh = sourceMeshFilter.sharedMesh; + } + + // + // Copy mesh renderer + // + MeshRenderer sourceMeshRenderer = GetComponent(); + if ( sourceMeshRenderer != null ) + { + sourceRenderer = sourceMeshRenderer; + destRenderer = seeThru.AddComponent(); + } + + // + // Copy skinned mesh renderer + // + SkinnedMeshRenderer sourceSkinnedMeshRenderer = GetComponent(); + if ( sourceSkinnedMeshRenderer != null ) + { + SkinnedMeshRenderer destSkinnedMeshRenderer = seeThru.AddComponent(); + + sourceRenderer = sourceSkinnedMeshRenderer; + destRenderer = destSkinnedMeshRenderer; + + destSkinnedMeshRenderer.sharedMesh = sourceSkinnedMeshRenderer.sharedMesh; + destSkinnedMeshRenderer.rootBone = sourceSkinnedMeshRenderer.rootBone; + destSkinnedMeshRenderer.bones = sourceSkinnedMeshRenderer.bones; + destSkinnedMeshRenderer.quality = sourceSkinnedMeshRenderer.quality; + destSkinnedMeshRenderer.updateWhenOffscreen = sourceSkinnedMeshRenderer.updateWhenOffscreen; + } + + // + // Create see thru materials + // + if ( sourceRenderer != null && destRenderer != null ) + { + int materialCount = sourceRenderer.sharedMaterials.Length; + Material[] destRendererMaterials = new Material[materialCount]; + for ( int i = 0; i < materialCount; i++ ) + { + destRendererMaterials[i] = seeThruMaterial; + } + destRenderer.sharedMaterials = destRendererMaterials; + + for ( int i = 0; i < destRenderer.materials.Length; i++ ) + { + destRenderer.materials[i].renderQueue = 2001; // Rendered after geometry + } + + for ( int i = 0; i < sourceRenderer.materials.Length; i++ ) + { + if ( sourceRenderer.materials[i].renderQueue == 2000 ) + { + sourceRenderer.materials[i].renderQueue = 2002; + } + } + } + + seeThru.gameObject.SetActive( false ); + } + + + //------------------------------------------------- + void OnEnable() + { + interactable.onAttachedToHand += AttachedToHand; + interactable.onDetachedFromHand += DetachedFromHand; + } + + + //------------------------------------------------- + void OnDisable() + { + interactable.onAttachedToHand -= AttachedToHand; + interactable.onDetachedFromHand -= DetachedFromHand; + } + + + //------------------------------------------------- + private void AttachedToHand( Hand hand ) + { + seeThru.SetActive( true ); + } + + + //------------------------------------------------- + private void DetachedFromHand( Hand hand ) + { + seeThru.SetActive( false ); + } + + + //------------------------------------------------- + void Update() + { + if ( seeThru.activeInHierarchy ) + { + int materialCount = Mathf.Min( sourceRenderer.materials.Length, destRenderer.materials.Length ); + for ( int i = 0; i < materialCount; i++ ) + { + destRenderer.materials[i].mainTexture = sourceRenderer.materials[i].mainTexture; + destRenderer.materials[i].color = destRenderer.materials[i].color * sourceRenderer.materials[i].color; + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta new file mode 100644 index 00000000..bb7dadf5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7d623a50b67320940b97e93e31d0a21b +timeCreated: 1544852181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - seeThruMaterial: {fileID: 2100000, guid: 3bbb445147c574240a8b87a1193788b5, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs new file mode 100644 index 00000000..59487732 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs @@ -0,0 +1,25 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object's rigidbody goes to sleep when created +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SleepOnAwake : MonoBehaviour + { + //------------------------------------------------- + void Awake() + { + Rigidbody rigidbody = GetComponent(); + if ( rigidbody ) + { + rigidbody.Sleep(); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta new file mode 100644 index 00000000..210df55d --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0584375ad2f33ef4da0b276de8507487 +timeCreated: 1544852181 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs new file mode 100644 index 00000000..655b1ad5 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs @@ -0,0 +1,38 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Unparents this object and optionally destroys it after the sound +// has played +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SoundDeparent : MonoBehaviour + { + public bool destroyAfterPlayOnce = true; + private AudioSource thisAudioSource; + + + //------------------------------------------------- + void Awake() + { + thisAudioSource = GetComponent(); + + } + + + //------------------------------------------------- + void Start() + { + // move the sound object out from under the parent + gameObject.transform.parent = null; + + if ( destroyAfterPlayOnce ) + Destroy( gameObject, thisAudioSource.clip.length ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta new file mode 100644 index 00000000..c52222de --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f53662f45a4454944a06629fec9c941e +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs new file mode 100644 index 00000000..d2104602 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs @@ -0,0 +1,75 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Play one-shot sounds as opposed to continuos/looping ones +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SoundPlayOneshot : MonoBehaviour + { + public AudioClip[] waveFiles; + private AudioSource thisAudioSource; + + public float volMin; + public float volMax; + + public float pitchMin; + public float pitchMax; + + public bool playOnAwake; + + + //------------------------------------------------- + void Awake() + { + thisAudioSource = GetComponent(); + + if ( playOnAwake ) + { + Play(); + } + } + + + //------------------------------------------------- + public void Play() + { + if ( thisAudioSource != null && thisAudioSource.isActiveAndEnabled && !Util.IsNullOrEmpty( waveFiles ) ) + { + //randomly apply a volume between the volume min max + thisAudioSource.volume = Random.Range( volMin, volMax ); + + //randomly apply a pitch between the pitch min max + thisAudioSource.pitch = Random.Range( pitchMin, pitchMax ); + + // play the sound + thisAudioSource.PlayOneShot( waveFiles[Random.Range( 0, waveFiles.Length )] ); + } + } + + + //------------------------------------------------- + public void Pause() + { + if ( thisAudioSource != null ) + { + thisAudioSource.Pause(); + } + } + + + //------------------------------------------------- + public void UnPause() + { + if ( thisAudioSource != null ) + { + thisAudioSource.UnPause(); + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta new file mode 100644 index 00000000..f041d3ed --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32c1c9a5bbab2e54280027c0ecaf42db +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs new file mode 100644 index 00000000..3a07cbed --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs @@ -0,0 +1,47 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Spawns and attaches an object to the hand after the controller has +// tracking +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SpawnAndAttachAfterControllerIsTracking : MonoBehaviour + { + private Hand hand; + public GameObject itemPrefab; + + + //------------------------------------------------- + void Start() + { + hand = GetComponentInParent(); + } + + + //------------------------------------------------- + void Update() + { + if ( itemPrefab != null ) + { + if (hand.isActive && hand.isPoseValid) + { + GameObject objectToAttach = GameObject.Instantiate(itemPrefab); + objectToAttach.SetActive(true); + hand.AttachObject(objectToAttach, GrabTypes.Scripted); + hand.TriggerHapticPulse(800); + Destroy(gameObject); + + // If the player's scale has been changed the object to attach will be the wrong size. + // To fix this we change the object's scale back to its original, pre-attach scale. + objectToAttach.transform.localScale = itemPrefab.transform.localScale; + } + } + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta new file mode 100644 index 00000000..3d2b61b9 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6ad167161b0bf8e4d9c038db358e0a28 +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs new file mode 100644 index 00000000..189d4a04 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs @@ -0,0 +1,37 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Creates an object and attaches it to the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SpawnAndAttachToHand : MonoBehaviour + { + public Hand hand; + public GameObject prefab; + + + //------------------------------------------------- + public void SpawnAndAttach( Hand passedInhand ) + { + Hand handToUse = passedInhand; + if ( passedInhand == null ) + { + handToUse = hand; + } + + if ( handToUse == null ) + { + return; + } + + GameObject prefabObject = Instantiate( prefab ) as GameObject; + handToUse.AttachObject( prefabObject, GrabTypes.Scripted ); + } + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta new file mode 100644 index 00000000..15f69406 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4a03a51c550b92478a559cf694ce118 +timeCreated: 1544852182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs new file mode 100644 index 00000000..1215a6f3 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs @@ -0,0 +1,289 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Basic throwable object +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + [RequireComponent( typeof( Rigidbody ) )] + public class Throwable : MonoBehaviour + { + [EnumFlags] + [Tooltip( "The flags used to attach this object to the hand." )] + public Hand.AttachmentFlags attachmentFlags = Hand.AttachmentFlags.ParentToHand | Hand.AttachmentFlags.DetachFromOtherHand | Hand.AttachmentFlags.TurnOnKinematic; + + [Tooltip("The local point which acts as a positional and rotational offset to use while held")] + public Transform attachmentOffset; + + [Tooltip( "How fast must this object be moving to attach due to a trigger hold instead of a trigger press? (-1 to disable)" )] + public float catchingSpeedThreshold = -1; + + public ReleaseStyle releaseVelocityStyle = ReleaseStyle.GetFromHand; + + [Tooltip("The time offset used when releasing the object with the RawFromHand option")] + public float releaseVelocityTimeOffset = -0.011f; + + public float scaleReleaseVelocity = 1.1f; + + [Tooltip("The release velocity magnitude representing the end of the scale release velocity curve. (-1 to disable)")] + public float scaleReleaseVelocityThreshold = -1.0f; + [Tooltip("Use this curve to ease into the scaled release velocity based on the magnitude of the measured release velocity. This allows greater differentiation between a drop, toss, and throw.")] + public AnimationCurve scaleReleaseVelocityCurve = AnimationCurve.EaseInOut(0.0f, 0.1f, 1.0f, 1.0f); + + [Tooltip( "When detaching the object, should it return to its original parent?" )] + public bool restoreOriginalParent = false; + + + + protected VelocityEstimator velocityEstimator; + protected bool attached = false; + protected float attachTime; + protected Vector3 attachPosition; + protected Quaternion attachRotation; + protected Transform attachEaseInTransform; + + public UnityEvent onPickUp; + public UnityEvent onDetachFromHand; + public HandEvent onHeldUpdate; + + + protected RigidbodyInterpolation hadInterpolation = RigidbodyInterpolation.None; + + protected new Rigidbody rigidbody; + + [HideInInspector] + public Interactable interactable; + + + //------------------------------------------------- + protected virtual void Awake() + { + velocityEstimator = GetComponent(); + interactable = GetComponent(); + + + + rigidbody = GetComponent(); + rigidbody.maxAngularVelocity = 50.0f; + + + if(attachmentOffset != null) + { + // remove? + //interactable.handFollowTransform = attachmentOffset; + } + + } + + + //------------------------------------------------- + protected virtual void OnHandHoverBegin( Hand hand ) + { + bool showHint = false; + + // "Catch" the throwable by holding down the interaction button instead of pressing it. + // Only do this if the throwable is moving faster than the prescribed threshold speed, + // and if it isn't attached to another hand + if ( !attached && catchingSpeedThreshold != -1) + { + float catchingThreshold = catchingSpeedThreshold * SteamVR_Utils.GetLossyScale(Player.instance.trackingOriginTransform); + + GrabTypes bestGrabType = hand.GetBestGrabbingType(); + + if ( bestGrabType != GrabTypes.None ) + { + if (rigidbody.velocity.magnitude >= catchingThreshold) + { + hand.AttachObject( gameObject, bestGrabType, attachmentFlags ); + showHint = false; + } + } + } + + if ( showHint ) + { + hand.ShowGrabHint(); + } + } + + + //------------------------------------------------- + protected virtual void OnHandHoverEnd( Hand hand ) + { + hand.HideGrabHint(); + } + + + //------------------------------------------------- + protected virtual void HandHoverUpdate( Hand hand ) + { + GrabTypes startingGrabType = hand.GetGrabStarting(); + + if (startingGrabType != GrabTypes.None) + { + hand.AttachObject( gameObject, startingGrabType, attachmentFlags, attachmentOffset ); + hand.HideGrabHint(); + } + } + + //------------------------------------------------- + protected virtual void OnAttachedToHand( Hand hand ) + { + //Debug.Log("[SteamVR Interaction] Pickup: " + hand.GetGrabStarting().ToString()); + + hadInterpolation = this.rigidbody.interpolation; + + attached = true; + + onPickUp.Invoke(); + + hand.HoverLock( null ); + + rigidbody.interpolation = RigidbodyInterpolation.None; + + if (velocityEstimator != null) + velocityEstimator.BeginEstimatingVelocity(); + + attachTime = Time.time; + attachPosition = transform.position; + attachRotation = transform.rotation; + + } + + + //------------------------------------------------- + protected virtual void OnDetachedFromHand(Hand hand) + { + attached = false; + + onDetachFromHand.Invoke(); + + hand.HoverUnlock(null); + + rigidbody.interpolation = hadInterpolation; + + Vector3 velocity; + Vector3 angularVelocity; + + GetReleaseVelocities(hand, out velocity, out angularVelocity); + + rigidbody.velocity = velocity; + rigidbody.angularVelocity = angularVelocity; + } + + + public virtual void GetReleaseVelocities(Hand hand, out Vector3 velocity, out Vector3 angularVelocity) + { + if (hand.noSteamVRFallbackCamera && releaseVelocityStyle != ReleaseStyle.NoChange) + releaseVelocityStyle = ReleaseStyle.ShortEstimation; // only type that works with fallback hand is short estimation. + + switch (releaseVelocityStyle) + { + case ReleaseStyle.ShortEstimation: + if (velocityEstimator != null) + { + velocityEstimator.FinishEstimatingVelocity(); + velocity = velocityEstimator.GetVelocityEstimate(); + angularVelocity = velocityEstimator.GetAngularVelocityEstimate(); + } + else + { + Debug.LogWarning("[SteamVR Interaction System] Throwable: No Velocity Estimator component on object but release style set to short estimation. Please add one or change the release style."); + + velocity = rigidbody.velocity; + angularVelocity = rigidbody.angularVelocity; + } + break; + case ReleaseStyle.AdvancedEstimation: + hand.GetEstimatedPeakVelocities(out velocity, out angularVelocity); + break; + case ReleaseStyle.GetFromHand: + velocity = hand.GetTrackedObjectVelocity(releaseVelocityTimeOffset); + angularVelocity = hand.GetTrackedObjectAngularVelocity(releaseVelocityTimeOffset); + break; + default: + case ReleaseStyle.NoChange: + velocity = rigidbody.velocity; + angularVelocity = rigidbody.angularVelocity; + break; + } + + if (releaseVelocityStyle != ReleaseStyle.NoChange) + { + float scaleFactor = 1.0f; + if (scaleReleaseVelocityThreshold > 0) + { + scaleFactor = Mathf.Clamp01(scaleReleaseVelocityCurve.Evaluate(velocity.magnitude / scaleReleaseVelocityThreshold)); + } + + velocity *= (scaleFactor * scaleReleaseVelocity); + } + } + + //------------------------------------------------- + protected virtual void HandAttachedUpdate(Hand hand) + { + + + if (hand.IsGrabEnding(this.gameObject)) + { + hand.DetachObject(gameObject, restoreOriginalParent); + + // Uncomment to detach ourselves late in the frame. + // This is so that any vehicles the player is attached to + // have a chance to finish updating themselves. + // If we detach now, our position could be behind what it + // will be at the end of the frame, and the object may appear + // to teleport behind the hand when the player releases it. + //StartCoroutine( LateDetach( hand ) ); + } + + if (onHeldUpdate != null) + onHeldUpdate.Invoke(hand); + } + + + //------------------------------------------------- + protected virtual IEnumerator LateDetach( Hand hand ) + { + yield return new WaitForEndOfFrame(); + + hand.DetachObject( gameObject, restoreOriginalParent ); + } + + + //------------------------------------------------- + protected virtual void OnHandFocusAcquired( Hand hand ) + { + gameObject.SetActive( true ); + + if (velocityEstimator != null) + velocityEstimator.BeginEstimatingVelocity(); + } + + + //------------------------------------------------- + protected virtual void OnHandFocusLost( Hand hand ) + { + gameObject.SetActive( false ); + + if (velocityEstimator != null) + velocityEstimator.FinishEstimatingVelocity(); + } + } + + public enum ReleaseStyle + { + NoChange, + GetFromHand, + ShortEstimation, + AdvancedEstimation, + } +} diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta new file mode 100644 index 00000000..dcce2898 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ffefbea063cab884ca33e5a449e5c22c +timeCreated: 1544852191 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs new file mode 100644 index 00000000..6427eb56 --- /dev/null +++ b/Projects/SteamVR/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs @@ -0,0 +1,89 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: UIElement that responds to VR hands and generates UnityEvents +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; +using System; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class UIElement : MonoBehaviour + { + public CustomEvents.UnityEventHand onHandClick; + + protected Hand currentHand; + + //------------------------------------------------- + protected virtual void Awake() + { + Button button = GetComponent