From dc73c2ef1cc0e79f8b470f53e7dd1777b0359edd Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Tue, 17 Sep 2024 11:32:26 +0100 Subject: [PATCH 01/17] Update some UPM packages (#765) A few safe packages we can update --- Packages/manifest.json | 6 +++--- Packages/packages-lock.json | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index daa299657b..87ef219031 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -10,12 +10,12 @@ "com.unity.cloud.ktx": "3.4.0", "com.unity.editorcoroutines": "1.0.0", "com.unity.formats.usd": "1.0.3-preview.2", - "com.unity.ide.rider": "3.0.28", + "com.unity.ide.rider": "3.0.31", "com.unity.ide.visualstudio": "2.0.22", "com.unity.inputsystem": "https://github.com/icosa-mirror/com.unity.inputsystem.git#1.8.2-openbrush", "com.unity.localization": "1.5.2", - "com.unity.meshopt.decompress": "0.1.0-preview.6", - "com.unity.mobile.android-logcat": "1.4.2", + "com.unity.meshopt.decompress": "0.1.0-preview.7", + "com.unity.mobile.android-logcat": "1.4.3", "com.unity.nuget.mono-cecil": "1.11.4", "com.unity.performance.profile-analyzer": "1.2.2", "com.unity.recorder": "4.0.3", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index d86bace3d6..58f88db129 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -50,11 +50,11 @@ "depth": 1, "source": "registry", "dependencies": { - "com.unity.scriptablebuildpipeline": "1.21.23", "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.scriptablebuildpipeline": "1.21.23", "com.unity.modules.unitywebrequestassetbundle": "1.0.0" }, "url": "https://packages.unity.com" @@ -84,10 +84,10 @@ "depth": 0, "source": "registry", "dependencies": { - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.burst": "1.8.4", "com.unity.mathematics": "1.3.1", - "com.unity.burst": "1.8.4" + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" }, "url": "https://packages.unity.com" }, @@ -124,7 +124,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "3.0.28", + "version": "3.0.31", "depth": 0, "source": "registry", "dependencies": { @@ -168,17 +168,17 @@ "url": "https://packages.unity.com" }, "com.unity.meshopt.decompress": { - "version": "0.1.0-preview.6", + "version": "0.1.0-preview.7", "depth": 0, "source": "registry", "dependencies": { - "com.unity.mathematics": "1.2.1", - "com.unity.burst": "1.4.11" + "com.unity.burst": "1.4.11", + "com.unity.mathematics": "1.2.1" }, "url": "https://packages.unity.com" }, "com.unity.mobile.android-logcat": { - "version": "1.4.2", + "version": "1.4.3", "depth": 0, "source": "registry", "dependencies": {}, @@ -273,9 +273,9 @@ "depth": 0, "source": "registry", "dependencies": { + "com.unity.modules.audio": "1.0.0", "com.unity.modules.director": "1.0.0", "com.unity.modules.animation": "1.0.0", - "com.unity.modules.audio": "1.0.0", "com.unity.modules.particlesystem": "1.0.0" }, "url": "https://packages.unity.com" @@ -332,9 +332,9 @@ "depth": 0, "source": "registry", "dependencies": { - "com.unity.modules.subsystems": "1.0.0", "com.unity.modules.vr": "1.0.0", "com.unity.modules.xr": "1.0.0", + "com.unity.modules.subsystems": "1.0.0", "com.unity.xr.legacyinputhelpers": "2.1.7" }, "url": "https://packages.unity.com" @@ -353,10 +353,10 @@ "depth": 0, "source": "registry", "dependencies": { - "com.unity.xr.management": "4.4.0", - "com.unity.xr.legacyinputhelpers": "2.1.2", "com.unity.inputsystem": "1.6.3", - "com.unity.xr.core-utils": "2.1.1" + "com.unity.xr.core-utils": "2.1.1", + "com.unity.xr.management": "4.4.0", + "com.unity.xr.legacyinputhelpers": "2.1.2" }, "url": "https://packages.unity.com" }, From 0a1fd6e26b4f139a5b481f486ca153895351acfb Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Thu, 26 Sep 2024 11:31:27 +0100 Subject: [PATCH 02/17] Update Zapbox SDK (#770) Update version hashes --- Packages/manifest.json | 2 +- Packages/packages-lock.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 87ef219031..e1fe7dd9c3 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -28,7 +28,7 @@ "com.unity.xr.management": "4.4.1", "com.unity.xr.oculus": "4.2.0", "com.unity.xr.openxr": "1.10.0", - "com.zappar.xr.zapbox": "https://github.com/zappar-xr/zapbox-xr-sdk.git#3296cbf5046369801027a821fe9ff6082431a605", + "com.zappar.xr.zapbox": "https://github.com/zappar-xr/zapbox-xr-sdk.git#43697771ed65efee02d5b1743141b8179444c147", "org.khronos.unitygltf": "https://github.com/icosa-mirror/UnityGLTF.git", "org.nuget.google.apis": "1.64.0", "org.nuget.google.apis.auth": "1.64.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 58f88db129..8634fbb390 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -361,14 +361,14 @@ "url": "https://packages.unity.com" }, "com.zappar.xr.zapbox": { - "version": "https://github.com/zappar-xr/zapbox-xr-sdk.git#3296cbf5046369801027a821fe9ff6082431a605", + "version": "https://github.com/zappar-xr/zapbox-xr-sdk.git#43697771ed65efee02d5b1743141b8179444c147", "depth": 0, "source": "git", "dependencies": { "com.unity.xr.management": "3.2.9", "com.unity.xr.legacyinputhelpers": "2.1.4" }, - "hash": "3296cbf5046369801027a821fe9ff6082431a605" + "hash": "43697771ed65efee02d5b1743141b8179444c147" }, "org.khronos.unitygltf": { "version": "https://github.com/icosa-mirror/UnityGLTF.git", From 5282a4c8cc24707ba06c128aa834dc007e69f1d6 Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Thu, 26 Sep 2024 16:34:59 +0300 Subject: [PATCH 03/17] gzip config.vdf before storing as a secret (#771) --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0fd83a93fe..0b75e3da3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -907,7 +907,7 @@ jobs: - name: Restore steam login config run: | mkdir -p /home/runner/Steam/config - echo "${{ secrets.STEAM_CONFIG_VDF}}" | base64 -d - > /home/runner/Steam/config/config.vdf + echo "${{ secrets.STEAM_CONFIG_VDF}}" | base64 -d - | gunzip - > /home/runner/Steam/config/config.vdf md5sum /home/runner/Steam/config/config.vdf - name: Download Build Artifacts (Windows OpenXR) uses: actions/download-artifact@v4 @@ -948,7 +948,7 @@ jobs: CHANNEL: beta - name: Update steam login secret run: | - base64 -i /home/runner/Steam/config/config.vdf | gh secret set --visibility all --org icosa-foundation STEAM_CONFIG_VDF + gzip /home/runner/Steam/config/config.vdf -c | base64 | gh secret set --visibility all --org icosa-foundation STEAM_CONFIG_VDF md5sum /home/runner/Steam/config/config.vdf env: GITHUB_TOKEN: ${{ secrets.SECRET_UPDATER_PAT }} From 3ebd1e00c3acbb22e08767ffd600566d16315b72 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Sun, 6 Oct 2024 14:57:52 +0100 Subject: [PATCH 04/17] Logitech MK Ink Integration (#768) * Vertical slider for brush size * We were setting the brush size from the wrong slider vector component * Add up/down arrow icons * Brush size slider fixes * Correct orientation for slider increment button. Prefab fixes * FInish off vertical slider UI * Enable Oculus, update to Meta Core SDK 68.0.2 * Add Logitech MX Ink package * Use MX Ink Action Set * Decrease duration of haptic click * Remove references to touch controllers * Update main scene * Use VrStylusHandler to detect a MX Ink device and retrieve inputs * dotnet-format * Tray should check for stylus * Disable restore of package cache * Delete the step as ymlformat didn't like it being commented out * Stylus support files copied from prototype * Add stylus detection component to Quest controller * Revert "Delete the step as ymlformat didn't like it being commented out" This reverts commit 09aeb88cb02f5de7512aabfc297369f56b2be65c. * Revert "Disable restore of package cache" This reverts commit 4c2bc0c79ed04dc605af7f046e58edddff706374. * Update meta core sdk to version with our hotfix * Revert some (hopefully) unintentional changes * Revert all settings changes so this branch matches main where possible * Use the correct new method * Use if OCULUS_SUPPORTED for Logitech code * Add compiler conditionals around calls to Logitech code * Automatic changes related to Meta SDK update * Move Logitech files to Third Party * Handle either hand and bypass for non-Meta * More compiler conditionals around calls to Logitech code * Exclude serialized fields from conditional * Disable restoring library cache again * Revert "Disable restoring library cache again" This reverts commit 596f29daefedb923a51df7681128b37eb98f76ca. * Temp cache fix for forks [CI BUILD] * [CI BUILD] * Remove Sartom files as we're handling this a different way now * Fix detection and model display for stylus * [CI BUILD] * Remove unused sartom detector * [CI BUILD] * Some uncommitted changes that might actually matter * Revert some extraneous changes that Unity made by itself * [CI BUILD] * Revert "Temp cache fix for forks [CI BUILD]" This reverts commit babbc650a43aa0ec3c661ba551193000effa643e. * Reapply "Temp cache fix for forks [CI BUILD]" This reverts commit fd2e1a72e57e233488f30a3776b38656e6894ece. * See if this fixes issues with wand controls triggering on stylus input [CI BUILD] * Tweak label position * Revert "Reapply "Temp cache fix for forks [CI BUILD]"" This reverts commit 74c40d92f77c13156d23cae1f6a251ef923b0051. --------- Co-authored-by: Mario Gutierrez --- Assets/Editor/BuildTiltBrush.cs | 2 +- Assets/Oculus/OculusProjectConfig.asset | 4 +- Assets/Prefabs/Panels/BrushesPanel.prefab | 482 ++++- .../Prefabs/Panels/BrushesPanel_Mobile.prefab | 461 ++++- .../Panels/BrushesPanel_experimental.prefab | 509 ++++- .../Panels/Widgets/AdvancedSlider.prefab | 90 +- .../Panels/Widgets/AdvancedSliderV.prefab | 1749 +++++++++++++++++ .../Widgets/AdvancedSliderV.prefab.meta | 7 + .../SliderDescriptionVertical_Pill.prefab | 864 ++++++++ ...SliderDescriptionVertical_Pill.prefab.meta | 7 + ...erDescriptionVertical_Pill_TwoLines.prefab | 1038 ++++++++++ ...criptionVertical_Pill_TwoLines.prefab.meta | 7 + .../UIComponents/BrushSettingsTray.prefab | 510 +++++ .../BrushSettingsTray.prefab.meta | 7 + Assets/Resources/Icons/downarrow.png | Bin 0 -> 3073 bytes Assets/Resources/Icons/downarrow.png.meta | 110 ++ Assets/Resources/Icons/uparrow.png | Bin 0 -> 3017 bytes Assets/Resources/Icons/uparrow.png.meta | 110 ++ .../Resources/ImmersiveDebuggerSettings.asset | 37 + .../ImmersiveDebuggerSettings.asset.meta | 8 + Assets/Resources/InputActions.asset | 17 + Assets/Resources/InputActions.asset.meta | 8 + Assets/Resources/OculusPlatformSettings.asset | 17 + .../OculusPlatformSettings.asset.meta | 8 + Assets/Scenes/Main.unity | 82 + Assets/Scripts/Config.cs | 17 +- Assets/Scripts/GUI/BaseSlider.cs | 44 +- Assets/Scripts/GUI/BaseTray.cs | 41 +- Assets/Scripts/GUI/BrushSettingsTray.cs | 87 + Assets/Scripts/GUI/BrushSettingsTray.cs.meta | 3 + Assets/Scripts/Input/UnityXRControllerInfo.cs | 32 + Assets/Scripts/InputManager.cs | 5 + Assets/Scripts/Switchboard.cs | 6 + Assets/Scripts/Tools/FreePaintTool.cs | 1 + .../Strings/Strings Shared Data.asset | 4 + .../Localization/Strings/Strings_en.asset | 4 + Assets/ThirdParty/Logitech.meta | 8 + Assets/ThirdParty/Logitech/Drawing.prefab | 52 + .../ThirdParty/Logitech/Drawing.prefab.meta | 7 + Assets/ThirdParty/Logitech/Images.meta | 8 + .../logitech_vr_stylus_texture_v1.1.png | Bin 0 -> 45670 bytes .../logitech_vr_stylus_texture_v1.1.png.meta | 127 ++ Assets/ThirdParty/Logitech/MX_Ink.prefab | 175 ++ Assets/ThirdParty/Logitech/MX_Ink.prefab.meta | 7 + Assets/ThirdParty/Logitech/Materials.meta | 8 + .../Logitech/Materials/BlueInkSprite.mat | 91 + .../Logitech/Materials/BlueInkSprite.mat.meta | 8 + .../Logitech_Stylus_Material_v1.0.mat | 83 + .../Logitech_Stylus_Material_v1.0.mat.meta | 8 + Assets/ThirdParty/Logitech/Models.meta | 8 + .../Models/logitech_vr_stylus_v1.0.fbx | Bin 0 -> 251676 bytes .../Models/logitech_vr_stylus_v1.0.fbx.meta | 109 + Assets/ThirdParty/Logitech/MxInkActions.asset | 74 + .../Logitech/MxInkActions.asset.meta | 8 + Assets/ThirdParty/Logitech/Scripts.meta | 8 + .../Logitech/Scripts/LineDrawing.cs | 161 ++ .../Logitech/Scripts/LineDrawing.cs.meta | 11 + .../Logitech/Scripts/StylusHandler.cs | 33 + .../Logitech/Scripts/StylusHandler.cs.meta | 11 + .../Logitech/Scripts/VrStylusHandler.cs | 221 +++ .../Logitech/Scripts/VrStylusHandler.cs.meta | 11 + .../Logitech/logitech_vr_stylus_v1.0.prefab | 71 + .../logitech_vr_stylus_v1.0.prefab.meta | 7 + .../Settings/Open XR Package Settings.asset | 38 +- .../XR/Settings/OpenXR Editor Settings.asset | 7 +- Assets/XR/XRGeneralSettings.asset | 4 +- Packages/manifest.json | 2 +- Packages/packages-lock.json | 4 +- RuntimeActionBindings.json | 1 + 69 files changed, 7494 insertions(+), 255 deletions(-) create mode 100644 Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab create mode 100644 Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab.meta create mode 100644 Assets/Prefabs/SliderDescriptionVertical_Pill.prefab create mode 100644 Assets/Prefabs/SliderDescriptionVertical_Pill.prefab.meta create mode 100644 Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab create mode 100644 Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab.meta create mode 100644 Assets/Prefabs/UIComponents/BrushSettingsTray.prefab create mode 100644 Assets/Prefabs/UIComponents/BrushSettingsTray.prefab.meta create mode 100644 Assets/Resources/Icons/downarrow.png create mode 100644 Assets/Resources/Icons/downarrow.png.meta create mode 100644 Assets/Resources/Icons/uparrow.png create mode 100644 Assets/Resources/Icons/uparrow.png.meta create mode 100644 Assets/Resources/ImmersiveDebuggerSettings.asset create mode 100644 Assets/Resources/ImmersiveDebuggerSettings.asset.meta create mode 100644 Assets/Resources/InputActions.asset create mode 100644 Assets/Resources/InputActions.asset.meta create mode 100644 Assets/Resources/OculusPlatformSettings.asset create mode 100644 Assets/Resources/OculusPlatformSettings.asset.meta create mode 100644 Assets/Scripts/GUI/BrushSettingsTray.cs create mode 100644 Assets/Scripts/GUI/BrushSettingsTray.cs.meta create mode 100644 Assets/ThirdParty/Logitech.meta create mode 100644 Assets/ThirdParty/Logitech/Drawing.prefab create mode 100644 Assets/ThirdParty/Logitech/Drawing.prefab.meta create mode 100644 Assets/ThirdParty/Logitech/Images.meta create mode 100644 Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png create mode 100644 Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png.meta create mode 100644 Assets/ThirdParty/Logitech/MX_Ink.prefab create mode 100644 Assets/ThirdParty/Logitech/MX_Ink.prefab.meta create mode 100644 Assets/ThirdParty/Logitech/Materials.meta create mode 100644 Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat create mode 100644 Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat.meta create mode 100644 Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat create mode 100644 Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat.meta create mode 100644 Assets/ThirdParty/Logitech/Models.meta create mode 100644 Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx create mode 100644 Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx.meta create mode 100644 Assets/ThirdParty/Logitech/MxInkActions.asset create mode 100644 Assets/ThirdParty/Logitech/MxInkActions.asset.meta create mode 100644 Assets/ThirdParty/Logitech/Scripts.meta create mode 100644 Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs create mode 100644 Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs.meta create mode 100644 Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs create mode 100644 Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs.meta create mode 100644 Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs create mode 100644 Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs.meta create mode 100644 Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab create mode 100644 Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab.meta create mode 100644 RuntimeActionBindings.json diff --git a/Assets/Editor/BuildTiltBrush.cs b/Assets/Editor/BuildTiltBrush.cs index 8e5652fcc8..259ba578b2 100644 --- a/Assets/Editor/BuildTiltBrush.cs +++ b/Assets/Editor/BuildTiltBrush.cs @@ -696,7 +696,7 @@ static void CommandLine() // Call these once to create the files. Normally (i.e., in a GUI build), they're created with // [UnityEditor.InitializeOnLoad], but in case they're missing, like in CI, make sure they're // there! - OVRProjectConfig defaultOculusProjectConfig = OVRProjectConfig.GetProjectConfig(); + OVRProjectConfig defaultOculusProjectConfig = OVRProjectConfig.CachedProjectConfig; string useless_app_id = Assets.Oculus.VR.Editor.OVRPlatformToolSettings.AppID; #endif diff --git a/Assets/Oculus/OculusProjectConfig.asset b/Assets/Oculus/OculusProjectConfig.asset index 5390d56858..6444d5efbd 100644 --- a/Assets/Oculus/OculusProjectConfig.asset +++ b/Assets/Oculus/OculusProjectConfig.asset @@ -41,5 +41,5 @@ MonoBehaviour: systemSplashScreen: {fileID: 0} systemSplashScreenType: 0 _systemLoadingScreenBackground: 0 - ovrPluginMd5Win64: 33685b25e1b4f2b6c1632069bc88783632496c19eda9b55641c321c119bdf68c - ovrPluginMd5Android: b9e59102e373e2d7a97cd1dbe38cac15e89ec54c0a32b98491b3d09d93ccda7d + ovrPluginMd5Win64: d72fb658f3d9064293fb2241e5525905551003f900539e0b4fc00777d76dbee1 + ovrPluginMd5Android: 5ef6da3aad630673da6447f50e1b2d8aba8131f9f19a0720cb301a8c9f89d2b5 diff --git a/Assets/Prefabs/Panels/BrushesPanel.prefab b/Assets/Prefabs/Panels/BrushesPanel.prefab index 38b0d34173..e33632aae8 100644 --- a/Assets/Prefabs/Panels/BrushesPanel.prefab +++ b/Assets/Prefabs/Panels/BrushesPanel.prefab @@ -27,13 +27,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 114108} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.009, y: -0.643, z: 0.05} m_LocalScale: {x: 0.35767, y: 0.35, z: 0.3855768} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3328504 MeshFilter: @@ -110,6 +110,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: Music Visualization + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 0b9b3dffa74802347b4464ee95d62f3c, type: 3} @@ -162,9 +171,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 114108} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &118774 @@ -193,6 +210,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 118774} + serializedVersion: 2 m_LocalRotation: {x: 0.034062065, y: -0.52056015, z: 0.020789683, w: 0.852892} m_LocalPosition: {x: -12.256248, y: 9.122084, z: 3.5018842} m_LocalScale: {x: 1, y: 1, z: 1} @@ -201,8 +219,8 @@ Transform: - {fileID: 4000010436372174} - {fileID: 423482} - {fileID: 457820} + - {fileID: 5254574416487740940} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!114 &114666146255114844 MonoBehaviour: @@ -345,13 +363,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 137668} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0, y: -0, z: 0.05} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3355160 MeshFilter: @@ -385,13 +403,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 151754} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 434816} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &6534176 BoxCollider: @@ -401,9 +419,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 151754} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 2.4, y: 2.4, z: 0.5} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &186796 @@ -429,6 +455,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 186796} + serializedVersion: 2 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} @@ -440,7 +467,6 @@ Transform: - {fileID: 4000010181597228} - {fileID: 451564} m_Father: {fileID: 434816} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &188140 GameObject: @@ -466,13 +492,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188140} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &6507090 BoxCollider: @@ -482,9 +508,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188140} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.9, y: 1.9, z: 0.02} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1000013324895138 @@ -512,13 +546,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000013324895138} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 434816} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000011495623358 MeshFilter: @@ -596,13 +630,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000013658316794} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!33 &33000011759986358 MeshFilter: @@ -693,6 +727,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1033254370908088} + serializedVersion: 2 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} @@ -713,7 +748,6 @@ Transform: - {fileID: 4541394138392128} - {fileID: 4594233671013312} m_Father: {fileID: 457820} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!114 &114967847436321090 MonoBehaviour: @@ -740,6 +774,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_PrevButton: {fileID: 1363341550207350} @@ -760,9 +803,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1033254370908088} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.8, y: 1.8, z: 0.01} m_Center: {x: 0, y: 0, z: -0.05} --- !u!114 &114191328384987222 @@ -802,13 +853,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1034646577577660} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.2500004, y: -0.25000095, z: -0.049999654} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4222800809097972} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33258176710762266 MeshFilter: @@ -885,13 +936,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1036635943068616} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4092786056026944} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33798956104844744 MeshFilter: @@ -970,13 +1021,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1057002490137040} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.6339998, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4439849343356344} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33442641929622692 MeshFilter: @@ -1036,9 +1087,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1057002490137040} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114221200383573830 @@ -1066,6 +1125,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} @@ -1112,6 +1180,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1070133057988858} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1120,7 +1189,6 @@ Transform: - {fileID: 4108651137447072} - {fileID: 4486633406044210} m_Father: {fileID: 4439849343356344} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33602195719779224 MeshFilter: @@ -1197,6 +1265,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1223,9 +1300,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1070133057988858} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1082253630387296 @@ -1255,6 +1340,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1082253630387296} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1263,7 +1349,6 @@ Transform: - {fileID: 4869283307891142} - {fileID: 4781517279745158} m_Father: {fileID: 4439849343356344} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33137769298429946 MeshFilter: @@ -1340,6 +1425,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1366,9 +1460,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1082253630387296} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1092626861718874 @@ -1396,13 +1498,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1092626861718874} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4169963971905518} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33764684550163016 MeshFilter: @@ -1481,6 +1583,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1124170676566392} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1489,7 +1592,6 @@ Transform: - {fileID: 4155577581400712} - {fileID: 4867981065072342} m_Father: {fileID: 4439849343356344} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33999848501626978 MeshFilter: @@ -1566,6 +1668,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1592,9 +1703,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1124170676566392} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1151936270169688 @@ -1622,13 +1741,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1151936270169688} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4800880677547804} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33143972308239754 MeshFilter: @@ -1705,13 +1824,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1197317096230920} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4797752376659910} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33608213675346472 MeshFilter: @@ -1788,13 +1907,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1276197100454822} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4442583011411748} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33620541378919070 MeshFilter: @@ -1871,13 +1990,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1283019572438770} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4191910600466198} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33114786386958736 MeshFilter: @@ -1954,13 +2073,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1313800748318712} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4092786056026944} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33036039735581926 MeshFilter: @@ -2039,6 +2158,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1315464994656632} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2047,7 +2167,6 @@ Transform: - {fileID: 4750288536566258} - {fileID: 4632883719001664} m_Father: {fileID: 4439849343356344} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33487977049538338 MeshFilter: @@ -2124,6 +2243,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2150,9 +2278,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1315464994656632} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1363341550207350 @@ -2182,13 +2318,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1363341550207350} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.6160002, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4439849343356344} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33830763336452674 MeshFilter: @@ -2248,9 +2384,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1363341550207350} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114641627188333250 @@ -2278,6 +2422,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} @@ -2324,6 +2477,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1389368293188596} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2332,7 +2486,6 @@ Transform: - {fileID: 4508354498534506} - {fileID: 4449170370298676} m_Father: {fileID: 4439849343356344} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33331189676582540 MeshFilter: @@ -2409,6 +2562,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2435,9 +2597,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1389368293188596} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1407389709943618 @@ -2465,13 +2635,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1407389709943618} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4971485809952630} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33833414770521524 MeshFilter: @@ -2548,13 +2718,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1407773391288006} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4191910600466198} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33702479640743884 MeshFilter: @@ -2633,6 +2803,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1408422628715924} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2641,7 +2812,6 @@ Transform: - {fileID: 4336677930866082} - {fileID: 4653578460935370} m_Father: {fileID: 4439849343356344} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33279007656315524 MeshFilter: @@ -2718,6 +2888,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2744,9 +2923,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1408422628715924} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1409130113285012 @@ -2776,6 +2963,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409130113285012} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2784,7 +2972,6 @@ Transform: - {fileID: 4726737439690614} - {fileID: 4080543137521298} m_Father: {fileID: 4439849343356344} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33277730104430012 MeshFilter: @@ -2861,6 +3048,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2887,9 +3083,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409130113285012} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1413670148038462 @@ -2917,13 +3121,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1413670148038462} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4169963971905518} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33847780503233892 MeshFilter: @@ -3000,13 +3204,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1525429200455070} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4442583011411748} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33998393394827242 MeshFilter: @@ -3085,6 +3289,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1549567265420218} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3093,7 +3298,6 @@ Transform: - {fileID: 4659550634184844} - {fileID: 4517492496873706} m_Father: {fileID: 4439849343356344} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33278401593486628 MeshFilter: @@ -3170,6 +3374,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3196,9 +3409,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1549567265420218} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1555066545323188 @@ -3228,6 +3449,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1555066545323188} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3236,7 +3458,6 @@ Transform: - {fileID: 4883194001148416} - {fileID: 4667571532236068} m_Father: {fileID: 4439849343356344} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33229309276187046 MeshFilter: @@ -3313,6 +3534,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3339,9 +3569,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1555066545323188} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1563262884317394 @@ -3369,13 +3607,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1563262884317394} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4622063583187076} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33434646923364246 MeshFilter: @@ -3452,13 +3690,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1596100141879696} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4037035157830360} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33484435722109490 MeshFilter: @@ -3537,6 +3775,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1638574061759500} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3545,7 +3784,6 @@ Transform: - {fileID: 4609603735146808} - {fileID: 4557975401200536} m_Father: {fileID: 4439849343356344} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33926155320871928 MeshFilter: @@ -3622,6 +3860,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3648,9 +3895,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1638574061759500} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1644893705138206 @@ -3678,13 +3933,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1644893705138206} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4797752376659910} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33847613196621608 MeshFilter: @@ -3761,13 +4016,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1651586829955410} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4222800809097972} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33869925315002074 MeshFilter: @@ -3844,13 +4099,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1663085257925684} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4070048248072900} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33664219135662338 MeshFilter: @@ -3927,13 +4182,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1680427181151818} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4814286370340806} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33202902787055948 MeshFilter: @@ -4010,13 +4265,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1704109031662054} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4037035157830360} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33392759002234942 MeshFilter: @@ -4095,6 +4350,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1755985509404858} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -4103,7 +4359,6 @@ Transform: - {fileID: 4053472915575908} - {fileID: 4275656455712760} m_Father: {fileID: 4439849343356344} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33755036306560476 MeshFilter: @@ -4180,6 +4435,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -4206,9 +4470,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1755985509404858} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1838449828711304 @@ -4238,6 +4510,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1838449828711304} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -4246,7 +4519,6 @@ Transform: - {fileID: 4433726612805618} - {fileID: 4421465453303074} m_Father: {fileID: 4439849343356344} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33314844711177206 MeshFilter: @@ -4323,6 +4595,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -4349,9 +4630,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1838449828711304} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1851629141480844 @@ -4379,13 +4668,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1851629141480844} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4814286370340806} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33932113903494686 MeshFilter: @@ -4462,13 +4751,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1905045451697176} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4622063583187076} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33338309971752166 MeshFilter: @@ -4545,13 +4834,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1929883965980120} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000098, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4070048248072900} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33214354388262684 MeshFilter: @@ -4628,13 +4917,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1954837425108698} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4800880677547804} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33917045310055202 MeshFilter: @@ -4711,13 +5000,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1964883706184972} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4971485809952630} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33196787180989904 MeshFilter: @@ -4769,3 +5058,66 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &5252753378642689984 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 434816} + m_Modifications: + - target: {fileID: 1503094713155990, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_Name + value: BrushSettingsTray + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.x + value: 0.959 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.y + value: -0.26 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.z + value: 0.04 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} +--- !u!4 &5254574416487740940 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, + type: 3} + m_PrefabInstance: {fileID: 5252753378642689984} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/BrushesPanel_Mobile.prefab b/Assets/Prefabs/Panels/BrushesPanel_Mobile.prefab index 1a75c0fd3e..05f48783bf 100644 --- a/Assets/Prefabs/Panels/BrushesPanel_Mobile.prefab +++ b/Assets/Prefabs/Panels/BrushesPanel_Mobile.prefab @@ -27,6 +27,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1058414191071464} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -35,7 +36,6 @@ Transform: - {fileID: 4980129379857646} - {fileID: 4336857922903122} m_Father: {fileID: 4218283724290616} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33829579923079940 MeshFilter: @@ -112,6 +112,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -138,9 +147,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1058414191071464} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1083883430886350 @@ -169,13 +186,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1083883430886350} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4262501330086264} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!33 &33232768086799094 MeshFilter: @@ -265,13 +282,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1085901682039170} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4919321322644624} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33962602204690344 MeshFilter: @@ -347,13 +364,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1103716007502724} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0, y: -0, z: 0.05} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4262501330086264} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33906815294370636 MeshFilter: @@ -389,6 +406,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1119189097058054} + serializedVersion: 2 m_LocalRotation: {x: 0.034062065, y: -0.52056015, z: 0.020789683, w: 0.852892} m_LocalPosition: {x: -12.256248, y: 9.122084, z: 3.5018842} m_LocalScale: {x: 1, y: 1, z: 1} @@ -397,8 +415,8 @@ Transform: - {fileID: 4204026960391338} - {fileID: 4578343200855608} - {fileID: 4262501330086264} + - {fileID: 1343216314990874693} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!114 &114655130322712890 MonoBehaviour: @@ -542,13 +560,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1138426446375662} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4635115123912042} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33148732521409060 MeshFilter: @@ -627,6 +645,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1186826680350636} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -635,7 +654,6 @@ Transform: - {fileID: 4643240604885268} - {fileID: 4852671337294226} m_Father: {fileID: 4218283724290616} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33670466575045350 MeshFilter: @@ -712,6 +730,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -738,9 +765,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1186826680350636} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1193249063360678 @@ -768,13 +803,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1193249063360678} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4499118054183530} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33596694001206824 MeshFilter: @@ -851,13 +886,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1211353507619724} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4112838380170586} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33950639601530010 MeshFilter: @@ -934,13 +969,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1216868067511642} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4745565324966208} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33286962047810642 MeshFilter: @@ -1019,6 +1054,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1240710088958898} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1027,7 +1063,6 @@ Transform: - {fileID: 4404283085811178} - {fileID: 4709401090306618} m_Father: {fileID: 4218283724290616} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33434504902454900 MeshFilter: @@ -1104,6 +1139,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1130,9 +1174,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1240710088958898} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1244779604786196 @@ -1160,13 +1212,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1244779604786196} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4427406993299286} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33864810670875618 MeshFilter: @@ -1243,13 +1295,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1268333643522296} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4499118054183530} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33182025628817704 MeshFilter: @@ -1328,6 +1380,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1297590146505348} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1336,7 +1389,6 @@ Transform: - {fileID: 4821554448650398} - {fileID: 4712261802085726} m_Father: {fileID: 4218283724290616} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33945842074703724 MeshFilter: @@ -1413,6 +1465,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1439,9 +1500,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1297590146505348} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1352109191960432 @@ -1469,13 +1538,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1352109191960432} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4112838380170586} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33588722846769574 MeshFilter: @@ -1554,6 +1623,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1364078719353600} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1562,7 +1632,6 @@ Transform: - {fileID: 4561141709141812} - {fileID: 4168229079718132} m_Father: {fileID: 4218283724290616} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33063928819510806 MeshFilter: @@ -1639,6 +1708,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1665,9 +1743,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1364078719353600} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1387716348806134 @@ -1695,13 +1781,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1387716348806134} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4126013512449192} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33574619786469024 MeshFilter: @@ -1780,6 +1866,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1467429439201416} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1788,7 +1875,6 @@ Transform: - {fileID: 4853608897367684} - {fileID: 4369157395221718} m_Father: {fileID: 4218283724290616} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33069631729019714 MeshFilter: @@ -1865,6 +1951,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1891,9 +1986,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1467429439201416} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1477318144670002 @@ -1923,13 +2026,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1477318144670002} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.6339998, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4218283724290616} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33121097593193784 MeshFilter: @@ -1989,9 +2092,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1477318144670002} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114887031890454866 @@ -2019,6 +2130,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} @@ -2065,6 +2185,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1496261736206120} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2073,7 +2194,6 @@ Transform: - {fileID: 4407059440980384} - {fileID: 4071958273888044} m_Father: {fileID: 4218283724290616} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33687396251989378 MeshFilter: @@ -2150,6 +2270,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2176,9 +2305,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1496261736206120} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1541022397896848 @@ -2206,13 +2343,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1541022397896848} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4126013512449192} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33176133485144398 MeshFilter: @@ -2287,6 +2424,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1552050041013830} + serializedVersion: 2 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} @@ -2297,7 +2435,6 @@ Transform: - {fileID: 4404169667267474} - {fileID: 4799943180469330} m_Father: {fileID: 4283814734408908} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1562875133912318 GameObject: @@ -2324,13 +2461,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1562875133912318} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4745565324966208} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33015736571262038 MeshFilter: @@ -2406,13 +2543,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1572614490045680} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4262501330086264} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65963000711119570 BoxCollider: @@ -2422,9 +2559,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1572614490045680} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.9, y: 1.9, z: 0.02} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1609012604900488 @@ -2452,13 +2597,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1609012604900488} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4635115123912042} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33089349128830104 MeshFilter: @@ -2535,13 +2680,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1621156500989810} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4195160479732622} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33140344032387366 MeshFilter: @@ -2620,6 +2765,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1632985123738494} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2628,7 +2774,6 @@ Transform: - {fileID: 4343642231580014} - {fileID: 4303631290832536} m_Father: {fileID: 4218283724290616} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33286233296174550 MeshFilter: @@ -2705,6 +2850,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2731,9 +2885,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1632985123738494} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1633808620163262 @@ -2761,13 +2923,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1633808620163262} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4206574239112854} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33029057915814752 MeshFilter: @@ -2844,13 +3006,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1663662598384544} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4427406993299286} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33061096735157338 MeshFilter: @@ -2929,6 +3091,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1725842912189370} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2937,7 +3100,6 @@ Transform: - {fileID: 4634057245373120} - {fileID: 4570503017862772} m_Father: {fileID: 4218283724290616} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33784614468687708 MeshFilter: @@ -3014,6 +3176,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3040,9 +3211,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1725842912189370} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1758917389014430 @@ -3070,13 +3249,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1758917389014430} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4206574239112854} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33836731073942734 MeshFilter: @@ -3153,13 +3332,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1778865231537526} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4135665873458212} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33361690734344536 MeshFilter: @@ -3238,13 +3417,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1809602046009930} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.6160002, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4218283724290616} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33475352732982568 MeshFilter: @@ -3304,9 +3483,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1809602046009930} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114619252139223240 @@ -3334,6 +3521,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} @@ -3378,13 +3574,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1822824095780682} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000098, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4919321322644624} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33121160248624278 MeshFilter: @@ -3463,6 +3659,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1823816310067468} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3471,7 +3668,6 @@ Transform: - {fileID: 4658181519975404} - {fileID: 4659436650145310} m_Father: {fileID: 4218283724290616} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33731117596138066 MeshFilter: @@ -3548,6 +3744,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3574,9 +3779,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1823816310067468} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1826016046196850 @@ -3604,13 +3817,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1826016046196850} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.2500004, y: -0.25000095, z: -0.049999654} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4195160479732622} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33690381368566602 MeshFilter: @@ -3687,13 +3900,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1853609275384804} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4269592690076886} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33949272424441370 MeshFilter: @@ -3772,6 +3985,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1856811985082432} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3780,7 +3994,6 @@ Transform: - {fileID: 4627296858957054} - {fileID: 4772817652619804} m_Father: {fileID: 4218283724290616} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33034592604580924 MeshFilter: @@ -3857,6 +4070,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3883,9 +4105,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1856811985082432} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1865684630343422 @@ -3915,6 +4145,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1865684630343422} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3923,7 +4154,6 @@ Transform: - {fileID: 4873379009260372} - {fileID: 4334570224379938} m_Father: {fileID: 4218283724290616} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33758751416636830 MeshFilter: @@ -4000,6 +4230,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -4026,9 +4265,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1865684630343422} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1898079655448966 @@ -4056,13 +4303,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1898079655448966} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4914655778411374} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33924063209100840 MeshFilter: @@ -4139,13 +4386,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1910235469589772} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4914655778411374} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33832440501447474 MeshFilter: @@ -4223,6 +4470,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1930707074163008} + serializedVersion: 2 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} @@ -4243,7 +4491,6 @@ Transform: - {fileID: 4995525888944572} - {fileID: 4185013486352696} m_Father: {fileID: 4262501330086264} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!114 &114291947272354016 MonoBehaviour: @@ -4270,6 +4517,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_PrevButton: {fileID: 1809602046009930} @@ -4290,9 +4546,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1930707074163008} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.8, y: 1.8, z: 0.01} m_Center: {x: 0, y: 0, z: -0.05} --- !u!114 &114719984306980722 @@ -4332,13 +4596,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1938820135156418} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4283814734408908} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33388559943476218 MeshFilter: @@ -4415,13 +4679,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1965207530917036} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4135665873458212} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33858302406373116 MeshFilter: @@ -4497,13 +4761,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1968419465027758} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4283814734408908} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65991805485152614 BoxCollider: @@ -4513,9 +4777,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1968419465027758} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 2.4, y: 2.4, z: 0.5} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1968830271372814 @@ -4543,13 +4815,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1968830271372814} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4269592690076886} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33144485263834602 MeshFilter: @@ -4601,3 +4873,66 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &1345002710036633993 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4283814734408908} + m_Modifications: + - target: {fileID: 1503094713155990, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_Name + value: BrushSettingsTray + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.x + value: 0.959 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.y + value: -0.233 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.z + value: 0.006 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} +--- !u!4 &1343216314990874693 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, + type: 3} + m_PrefabInstance: {fileID: 1345002710036633993} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/BrushesPanel_experimental.prefab b/Assets/Prefabs/Panels/BrushesPanel_experimental.prefab index 7de43c041b..a6827a3c6e 100644 --- a/Assets/Prefabs/Panels/BrushesPanel_experimental.prefab +++ b/Assets/Prefabs/Panels/BrushesPanel_experimental.prefab @@ -27,13 +27,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 114108} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.009, y: -0.643, z: 0.05} m_LocalScale: {x: 0.35767, y: 0.35, z: 0.3855768} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3328504 MeshFilter: @@ -110,6 +110,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: Music Visualization + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 0b9b3dffa74802347b4464ee95d62f3c, type: 3} @@ -162,9 +171,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 114108} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &118774 @@ -193,6 +210,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 118774} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -12.256248, y: 9.122084, z: 3.5018842} m_LocalScale: {x: 1, y: 1, z: 1} @@ -201,8 +219,8 @@ Transform: - {fileID: 4000010436372174} - {fileID: 423482} - {fileID: 457820} + - {fileID: 2575239402434674311} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &114648931210450374 MonoBehaviour: @@ -252,7 +270,7 @@ MonoBehaviour: m_BorderMeshAdvWidth: 0.01 m_PanelSensitivity: 0.1 m_ClampToBounds: 1 - m_ReticleBounds: {x: 2.05, y: 2, z: 0} + m_ReticleBounds: {x: 3, y: 2, z: 0} m_BorderSphereHighlightRadius: 2 m_PositioningSpheresBounds: {x: 0.75, y: 1} m_PositioningSphereRadius: 0.4 @@ -345,13 +363,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 137668} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0, y: -0, z: 0.05} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3355160 MeshFilter: @@ -385,13 +403,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 151754} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 434816} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &6534176 BoxCollider: @@ -401,9 +419,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 151754} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 2.4, y: 2.4, z: 0.5} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &186796 @@ -429,6 +455,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 186796} + serializedVersion: 2 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} @@ -441,7 +468,6 @@ Transform: - {fileID: 4000012403472088} - {fileID: 451564} m_Father: {fileID: 434816} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &188140 GameObject: @@ -467,13 +493,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188140} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &6507090 BoxCollider: @@ -483,9 +509,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188140} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.9, y: 1.95, z: 0.02} m_Center: {x: 0, y: -0.05, z: 0} --- !u!1 &1000012021792532 @@ -515,6 +549,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012021792532} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.6394243, y: -0.91969776, z: 0.001816988} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -522,7 +557,6 @@ Transform: m_Children: - {fileID: 4000010162471726} m_Father: {fileID: 457820} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000014201479214 MeshFilter: @@ -582,9 +616,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012021792532} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 0.7, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114000011635621490 @@ -612,6 +654,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -681,13 +732,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012382714590} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.01} m_LocalScale: {x: 0.19999999, y: 0.19999999, z: 0.19999999} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010162471726} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000012623774488 MeshFilter: @@ -765,6 +816,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000013204392080} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2.85, y: 2.85, z: 2.85} @@ -772,7 +824,6 @@ Transform: m_Children: - {fileID: 4000013741424004} m_Father: {fileID: 4000012403472088} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000011628112868 MeshFilter: @@ -862,13 +913,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000013324895138} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 434816} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000011495623358 MeshFilter: @@ -946,13 +997,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000013658316794} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 457820} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 4.574, y: -62.7954, z: 0} --- !u!33 &33000011759986358 MeshFilter: @@ -1042,13 +1093,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1002136952495706} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4910167534954346} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33559353189938966 MeshFilter: @@ -1127,6 +1178,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1017389889125372} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1135,7 +1187,6 @@ Transform: - {fileID: 4699942439530024} - {fileID: 4369968486831918} m_Father: {fileID: 4987826134018012} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33664844160875248 MeshFilter: @@ -1212,6 +1263,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1238,9 +1298,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1017389889125372} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1045142711562232 @@ -1270,6 +1338,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045142711562232} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -1278,7 +1347,6 @@ Transform: - {fileID: 4496610398848936} - {fileID: 4024569421384500} m_Father: {fileID: 4987826134018012} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33343846969515172 MeshFilter: @@ -1355,6 +1423,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -1381,9 +1458,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1045142711562232} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1068886911742040 @@ -1411,13 +1496,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1068886911742040} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4511965426731848} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33621799137673010 MeshFilter: @@ -1494,13 +1579,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1095195590912222} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4560302905391112} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33808926566088872 MeshFilter: @@ -1577,13 +1662,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1122114045904648} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000095, z: -0.049999934} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4401839305095188} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33197401792477740 MeshFilter: @@ -1662,13 +1747,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1173171073385108} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.6339998, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4987826134018012} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33215534452313844 MeshFilter: @@ -1728,9 +1813,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1173171073385108} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114009177938015764 @@ -1758,6 +1851,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} @@ -1802,13 +1904,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1225330402099696} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4199709033773110} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33201303246395208 MeshFilter: @@ -1885,13 +1987,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1239516176388870} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4583253585690090} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33211422424025736 MeshFilter: @@ -1968,13 +2070,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1259949351074368} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4752066769842734} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33453515146481754 MeshFilter: @@ -2051,13 +2153,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1294157172380824} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4401839305095188} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33988888348342816 MeshFilter: @@ -2134,13 +2236,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1316553682398480} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4849344738282920} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33478077004114106 MeshFilter: @@ -2217,13 +2319,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1320028852325204} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4560302905391112} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33500535723270066 MeshFilter: @@ -2302,6 +2404,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1325287791365946} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2310,7 +2413,6 @@ Transform: - {fileID: 4629125763619662} - {fileID: 4231618220447054} m_Father: {fileID: 4987826134018012} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33486269581621554 MeshFilter: @@ -2387,6 +2489,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2413,9 +2524,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1325287791365946} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1336878034408986 @@ -2443,13 +2562,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1336878034408986} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4899860777075550} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33572425144981616 MeshFilter: @@ -2528,6 +2647,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1341374961367108} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2536,7 +2656,6 @@ Transform: - {fileID: 4522963442166718} - {fileID: 4629301845662422} m_Father: {fileID: 4987826134018012} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33152097647845546 MeshFilter: @@ -2613,6 +2732,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2639,9 +2767,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1341374961367108} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1429706728465662 @@ -2671,6 +2807,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1429706728465662} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -2679,7 +2816,6 @@ Transform: - {fileID: 4277663897643548} - {fileID: 4384697508490590} m_Father: {fileID: 4987826134018012} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33248762093001474 MeshFilter: @@ -2756,6 +2892,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -2782,9 +2927,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1429706728465662} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1460707959648700 @@ -2812,13 +2965,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1460707959648700} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4511965426731848} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33292712281572088 MeshFilter: @@ -2896,6 +3049,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1464418273390488} + serializedVersion: 2 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} @@ -2916,7 +3070,6 @@ Transform: - {fileID: 4388109476167430} - {fileID: 4874383899918386} m_Father: {fileID: 457820} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &114390729393873594 MonoBehaviour: @@ -2943,6 +3096,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_PrevButton: {fileID: 1828042464346620} @@ -2963,9 +3125,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1464418273390488} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.8, y: 1.8, z: 0.01} m_Center: {x: 0, y: 0, z: -0.05} --- !u!114 &114517528198912880 @@ -3005,13 +3175,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1470122324660056} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4955679311667128} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33488315794649814 MeshFilter: @@ -3088,13 +3258,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1521704884557320} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4081339383792766} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33291958012442388 MeshFilter: @@ -3173,6 +3343,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1534635085516240} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3181,7 +3352,6 @@ Transform: - {fileID: 4845959139908808} - {fileID: 4651274934816280} m_Father: {fileID: 4987826134018012} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33394391474382742 MeshFilter: @@ -3258,6 +3428,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3284,9 +3463,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1534635085516240} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1546409615781184 @@ -3314,13 +3501,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1546409615781184} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4752066769842734} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33954329024379868 MeshFilter: @@ -3399,6 +3586,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1589488024180748} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3407,7 +3595,6 @@ Transform: - {fileID: 4518891295224158} - {fileID: 4214855725233142} m_Father: {fileID: 4987826134018012} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33739381203405168 MeshFilter: @@ -3484,6 +3671,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3510,9 +3706,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1589488024180748} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1623268025553172 @@ -3542,6 +3746,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1623268025553172} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.21400023, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3550,7 +3755,6 @@ Transform: - {fileID: 4876631101703082} - {fileID: 4003099579237326} m_Father: {fileID: 4987826134018012} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33097858168767402 MeshFilter: @@ -3627,6 +3831,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3653,9 +3866,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1623268025553172} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1652101200395126 @@ -3685,6 +3906,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1652101200395126} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: -0.21899986, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3693,7 +3915,6 @@ Transform: - {fileID: 4575104272437520} - {fileID: 4455900687172376} m_Father: {fileID: 4987826134018012} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33599774249954356 MeshFilter: @@ -3770,6 +3991,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -3796,9 +4026,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1652101200395126} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1666804009135450 @@ -3826,13 +4064,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1666804009135450} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.2500004, y: -0.25000095, z: -0.049999654} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4199709033773110} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33094899670974002 MeshFilter: @@ -3911,6 +4149,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1742036980236408} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -3919,7 +4158,6 @@ Transform: - {fileID: 4671655840828330} - {fileID: 4776414701783990} m_Father: {fileID: 4987826134018012} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33394192381210146 MeshFilter: @@ -3996,6 +4234,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -4022,9 +4269,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1742036980236408} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1762803892830380 @@ -4052,13 +4307,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1762803892830380} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4955679311667128} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33457206555735776 MeshFilter: @@ -4135,13 +4390,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1795120565229932} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4849344738282920} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33750782876786696 MeshFilter: @@ -4218,13 +4473,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1812545929815744} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.25, y: -0.25, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4242888187637946} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33924949832364642 MeshFilter: @@ -4301,13 +4556,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1818163194938814} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4081339383792766} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33178268923077974 MeshFilter: @@ -4386,13 +4641,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1828042464346620} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.6160002, y: -0.6370001, z: 0.05000019} m_LocalScale: {x: 0.29999995, y: 0.29999998, z: 0.3000001} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4987826134018012} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33501584768716402 MeshFilter: @@ -4452,9 +4707,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1828042464346620} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114424494261967632 @@ -4482,6 +4745,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} @@ -4526,13 +4798,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1840566682281644} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4583253585690090} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33399706850251968 MeshFilter: @@ -4609,13 +4881,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1884034506313884} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.250001, y: -0.25000098, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4899860777075550} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33685593175333900 MeshFilter: @@ -4694,6 +4966,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892627715501604} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.64699984, y: 0.6289997, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -4702,7 +4975,6 @@ Transform: - {fileID: 4161529488360534} - {fileID: 4034421993837658} m_Father: {fileID: 4987826134018012} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33022905201746602 MeshFilter: @@ -4779,6 +5051,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -4805,9 +5086,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1892627715501604} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1898448960570084 @@ -4835,13 +5124,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1898448960570084} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4910167534954346} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33429636850874410 MeshFilter: @@ -4920,6 +5209,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1955756542660386} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.64699984, y: 0.21100044, z: 0.05000019} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} @@ -4928,7 +5218,6 @@ Transform: - {fileID: 4610220566871394} - {fileID: 4202094304577002} m_Father: {fileID: 4987826134018012} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33237723500592688 MeshFilter: @@ -5005,6 +5294,15 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 8 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -5031,9 +5329,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1955756542660386} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1989153269657150 @@ -5061,13 +5367,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1989153269657150} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.25000027, y: -0.25, z: -0.049999926} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4242888187637946} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33141063034174456 MeshFilter: @@ -5119,3 +5425,66 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &2572521163231377227 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 434816} + m_Modifications: + - target: {fileID: 1503094713155990, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_Name + value: BrushSettingsTray + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.x + value: 0.959 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.y + value: -0.233 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalPosition.z + value: 0.006 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ef594e7ddc7909f429747f1ebbe8af90, type: 3} +--- !u!4 &2575239402434674311 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4073457010706892, guid: ef594e7ddc7909f429747f1ebbe8af90, + type: 3} + m_PrefabInstance: {fileID: 2572521163231377227} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/Widgets/AdvancedSlider.prefab b/Assets/Prefabs/Panels/Widgets/AdvancedSlider.prefab index 6a9990fc31..9662ca99c4 100644 --- a/Assets/Prefabs/Panels/Widgets/AdvancedSlider.prefab +++ b/Assets/Prefabs/Panels/Widgets/AdvancedSlider.prefab @@ -31,7 +31,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4471627121253715424} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -203,7 +202,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4471627121253688460} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -375,7 +373,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4471627121253688460} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -521,6 +518,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4471627121253806520} m_Modifications: - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, @@ -674,12 +672,22 @@ PrefabInstance: value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &7130468635975133489 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 800866435964202640} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3712291086473841850 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, @@ -934,6 +942,41 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 8879551121032234077} + - targetCorrespondingSourceObject: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7824979537496111407} + - targetCorrespondingSourceObject: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1884626016259365661} + - targetCorrespondingSourceObject: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 821352009802746643} + - targetCorrespondingSourceObject: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2151883694999471845} + - targetCorrespondingSourceObject: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1004010000664055458} + - targetCorrespondingSourceObject: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7130468635975133489} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 975834435814379478, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2514466698640951438} m_SourcePrefab: {fileID: 100100000, guid: ebe6fa705c559de4084f3b11e7668c61, type: 3} --- !u!1 &4471627121253417836 stripped GameObject: @@ -958,20 +1001,20 @@ MonoBehaviour: m_DescriptionText: m_LocalizedDescription: m_TableReference: - m_TableCollectionName: + m_TableCollectionName: m_TableEntryReference: m_KeyId: 0 - m_Key: + m_Key: m_FallbackState: 0 m_WaitForCompletion: 0 m_LocalVariables: [] - m_DescriptionTextExtra: + m_DescriptionTextExtra: m_LocalizedDescriptionExtra: m_TableReference: - m_TableCollectionName: + m_TableCollectionName: m_TableEntryReference: m_KeyId: 0 - m_Key: + m_Key: m_FallbackState: 0 m_WaitForCompletion: 0 m_LocalVariables: [] @@ -979,6 +1022,7 @@ MonoBehaviour: m_DescriptionZScale: 10 m_Nob: {fileID: 4471627121253469398} m_Mesh: {fileID: 4471627121255601424} + m_Orientation: 0 m_DisplayDecimalPlaces: 1 m_Param1: 0 m_Param2: 0 @@ -1051,6 +1095,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4471627121253681306} m_Modifications: - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, @@ -1204,12 +1249,22 @@ PrefabInstance: value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &821352009802746643 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 7102101814680079538} + m_PrefabAsset: {fileID: 0} --- !u!1001 &7207810488610326787 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4471627121253768244} m_Modifications: - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, @@ -1363,12 +1418,22 @@ PrefabInstance: value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &1004010000664055458 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 7207810488610326787} + m_PrefabAsset: {fileID: 0} --- !u!1001 &8373522546168381764 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4471627121253758506} m_Modifications: - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, @@ -1522,4 +1587,13 @@ PrefabInstance: value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &2151883694999471845 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 8373522546168381764} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab b/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab new file mode 100644 index 0000000000..4c28ae795c --- /dev/null +++ b/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab @@ -0,0 +1,1749 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1366882551601991066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1884626016259365661} + - component: {fileID: 4220200482343937391} + - component: {fileID: 6988663123546496789} + m_Layer: 16 + m_Name: ValueText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1884626016259365661 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366882551601991066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.6666667} + m_LocalScale: {x: 17.2374, y: 51.7122, z: 51.7122} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4471627121253715424} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 5.59, y: -0.1} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &4220200482343937391 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366882551601991066} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6988663123546496789 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366882551601991066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 99 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_sharedMaterial: {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1 + m_fontSizeBase: 1 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.1536145, y: 0, z: -0.103544034, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 4220200482343937391} + m_maskType: 0 +--- !u!1 &4905375960837836422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7824979537496111407} + - component: {fileID: 1495263022959812396} + - component: {fileID: 791795469446217164} + m_Layer: 16 + m_Name: MaxText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7824979537496111407 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4905375960837836422} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.010000063} + m_LocalScale: {x: 0.6, y: 0.6, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4471627121253688460} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.00020009885, y: 0.27699983} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &1495263022959812396 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4905375960837836422} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &791795469446217164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4905375960837836422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 99 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_sharedMaterial: {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1 + m_fontSizeBase: 1 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1495263022959812396} + m_maskType: 0 +--- !u!1 &7353319288416430107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8879551121032234077} + - component: {fileID: 6476449211560461609} + - component: {fileID: 7444929264988374951} + m_Layer: 16 + m_Name: MinText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8879551121032234077 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353319288416430107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.010000207} + m_LocalScale: {x: 0.6, y: 0.6, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4471627121253688460} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.005, y: -0.29300058} + m_SizeDelta: {x: 0.2, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6476449211560461609 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353319288416430107} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &7444929264988374951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353319288416430107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 99 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_sharedMaterial: {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1 + m_fontSizeBase: 1 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6476449211560461609} + m_maskType: 0 +--- !u!1001 &800866435964202640 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4471627121253806520} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: MaxLimits + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.09374998 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.09374998 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.075 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustClick + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustHover + value: -0.001 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: 609917f61fdca0d469c1bc06bfeb713b, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Maximum Value + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverBoxColliderGrow + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionActivateSpeed + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2514466698640951438} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleChangeLimits + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.PolyhydraSlider, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &7130468635975133489 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 800866435964202640} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3712291086473841850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Size.x + value: 0.3349072 + objectReference: {fileID: 0} + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Size.y + value: 2.7804582 + objectReference: {fileID: 0} + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Size.z + value: 0.040708233 + objectReference: {fileID: 0} + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Center.x + value: -0.007917739 + objectReference: {fileID: 0} + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Center.y + value: -0.06772725 + objectReference: {fileID: 0} + - target: {fileID: 975834435811877436, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Center.z + value: 0.0043739914 + objectReference: {fileID: 0} + - target: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.00049960264 + objectReference: {fileID: 0} + - target: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.293 + objectReference: {fileID: 0} + - target: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.005 + objectReference: {fileID: 0} + - target: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.217 + objectReference: {fileID: 0} + - target: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.001 + objectReference: {fileID: 0} + - target: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.277 + objectReference: {fileID: 0} + - target: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.013 + objectReference: {fileID: 0} + - target: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.189 + objectReference: {fileID: 0} + - target: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.59 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.029999733 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalScale.x + value: 0.03 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalScale.y + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.003 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.008 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 975834435814149948, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 975834435814208152, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814209696, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814379256, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435814379478, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Name + value: AdvancedSliderV + objectReference: {fileID: 0} + - target: {fileID: 975834435814423874, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435816094086, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435816409572, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435816411850, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435816451644, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: max + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: min + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: maxText + value: + objectReference: {fileID: 791795469446217164} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: minText + value: + objectReference: {fileID: 7444929264988374951} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: valueText + value: + objectReference: {fileID: 6988663123546496789} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_DescriptionText + value: P Value + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleSliderP + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: HandleSliderP + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleSliderP + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_FloatArgument + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: OnUpdate.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 975834435824077772, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Icon + value: + objectReference: {fileID: 0} + - target: {fileID: 975834435824087934, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + propertyPath: m_Icon + value: + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 975834435824073636, guid: ebe6fa705c559de4084f3b11e7668c61, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 8879551121032234077} + - targetCorrespondingSourceObject: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7824979537496111407} + - targetCorrespondingSourceObject: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1884626016259365661} + - targetCorrespondingSourceObject: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 821352009802746643} + - targetCorrespondingSourceObject: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2151883694999471845} + - targetCorrespondingSourceObject: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1004010000664055458} + - targetCorrespondingSourceObject: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7130468635975133489} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 975834435814379478, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2514466698640951438} + m_SourcePrefab: {fileID: 100100000, guid: ebe6fa705c559de4084f3b11e7668c61, type: 3} +--- !u!1 &4471627121253417836 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 975834435814379478, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2514466698640951438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4471627121253417836} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 42c914c85d400664c9df3239aafbec71, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 3 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 10 + m_Nob: {fileID: 4471627121253469398} + m_Mesh: {fileID: 4471627121255601424} + m_Orientation: 1 + m_DisplayDecimalPlaces: 1 + m_Param1: 0 + m_Param2: 0 + m_safeMin: 0 + m_safeMax: 1 + m_unsafeMin: 0 + m_unsafeMax: 1 + m_SafeLimits: 1 + m_InitialValue: 0.5 + minText: {fileID: 7444929264988374951} + maxText: {fileID: 791795469446217164} + valueText: {fileID: 6988663123546496789} + SliderType: 1 + onUpdateValue: + m_PersistentCalls: + m_Calls: [] + references: + version: 2 + RefIds: [] +--- !u!1 &4471627121253469398 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 975834435814391916, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253681306 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814114336, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253688460 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814123574, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253715424 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814146394, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253758506 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814062736, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253768244 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814035598, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4471627121253806520 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 975834435814079746, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!23 &4471627121255601424 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 975834435816397226, guid: ebe6fa705c559de4084f3b11e7668c61, + type: 3} + m_PrefabInstance: {fileID: 3712291086473841850} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7102101814680079538 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4471627121253681306} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: Increment + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.39 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.28 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.01000319 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustClick + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustHover + value: -0.001 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: e5a95db3eceb2ac48bd574c538be1470, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Increase + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverBoxColliderGrow + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionActivateSpeed + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2514466698640951438} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleIncrement + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.PolyhydraSlider, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &821352009802746643 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 7102101814680079538} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7207810488610326787 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4471627121253768244} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: MinLimits + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.09375 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.09375 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.09375 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustClick + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustHover + value: -0.001 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: 609917f61fdca0d469c1bc06bfeb713b, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Minimum Value + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverBoxColliderGrow + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionActivateSpeed + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2514466698640951438} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleChangeLimits + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.PolyhydraSlider, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &1004010000664055458 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 7207810488610326787} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8373522546168381764 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4471627121253758506} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: Decrement + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.14 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.59 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.01 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustClick + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ZAdjustHover + value: -0.001 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: 73dde82cc4f081546876901bce591a1e, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Decrease + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_HoverBoxColliderGrow + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionActivateSpeed + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2514466698640951438} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: HandleDecrement + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.PolyhydraSlider, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &2151883694999471845 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 8373522546168381764} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab.meta b/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab.meta new file mode 100644 index 0000000000..e0ba221377 --- /dev/null +++ b/Assets/Prefabs/Panels/Widgets/AdvancedSliderV.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 93b04d984a8fd234eb4a7227567865a7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab b/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab new file mode 100644 index 0000000000..79cf9bffc4 --- /dev/null +++ b/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab @@ -0,0 +1,864 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1031604341972012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4349668459466822} + - component: {fileID: 33913801300591068} + - component: {fileID: 23162514034225944} + m_Layer: 16 + m_Name: LeftBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4349668459466822 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031604341972012} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4541991548142212} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33913801300591068 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031604341972012} + m_Mesh: {fileID: 4300008, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23162514034225944 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031604341972012} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1110612856389182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4271023386467634} + - component: {fileID: 33864590963698454} + - component: {fileID: 23378255582476254} + m_Layer: 16 + m_Name: RightBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4271023386467634 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110612856389182} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4510075354660724} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33864590963698454 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110612856389182} + m_Mesh: {fileID: 4300010, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23378255582476254 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1110612856389182} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1219777963505972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4423080799211536} + m_Layer: 16 + m_Name: Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4423080799211536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1219777963505972} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4795596623256706} + - {fileID: 4852237231748870} + m_Father: {fileID: 4730816088910194} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1270269764682322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4852237231748870} + - component: {fileID: 33635436758652978} + - component: {fileID: 23996510484795302} + m_Layer: 16 + m_Name: CenterBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4852237231748870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270269764682322} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4423080799211536} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33635436758652978 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270269764682322} + m_Mesh: {fileID: 4300000, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23996510484795302 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270269764682322} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1354504750949956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4363468780315798} + - component: {fileID: 33689156436411526} + - component: {fileID: 23844648081075438} + m_Layer: 16 + m_Name: RightBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4363468780315798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1354504750949956} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4510075354660724} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33689156436411526 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1354504750949956} + m_Mesh: {fileID: 4300004, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23844648081075438 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1354504750949956} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1407859891928218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4730816088910194} + m_Layer: 16 + m_Name: RoundedTooltipMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4730816088910194 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407859891928218} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.294, y: -0, z: -0.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4541991548142212} + - {fileID: 4423080799211536} + - {fileID: 4510075354660724} + m_Father: {fileID: 4719072339593620} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1417282016649708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4283381800739476} + - component: {fileID: 33898656397844776} + - component: {fileID: 23619935002574026} + m_Layer: 16 + m_Name: LeftBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4283381800739476 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1417282016649708} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4541991548142212} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33898656397844776 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1417282016649708} + m_Mesh: {fileID: 4300006, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23619935002574026 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1417282016649708} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1483869887805908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4541991548142212} + m_Layer: 16 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4541991548142212 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483869887805908} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4349668459466822} + - {fileID: 4283381800739476} + m_Father: {fileID: 4730816088910194} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1748473933979218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4510075354660724} + m_Layer: 16 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4510075354660724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748473933979218} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4363468780315798} + - {fileID: 4271023386467634} + m_Father: {fileID: 4730816088910194} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1977092981759950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4795596623256706} + - component: {fileID: 33538494050617450} + - component: {fileID: 23133793043248348} + m_Layer: 16 + m_Name: CenterBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4795596623256706 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977092981759950} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4423080799211536} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33538494050617450 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977092981759950} + m_Mesh: {fileID: 4300002, guid: 43a200728859bfe489640f76f3bbf13d, type: 3} +--- !u!23 &23133793043248348 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977092981759950} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1997325689525770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4719072339593620} + - component: {fileID: 114575628490289154} + m_Layer: 16 + m_Name: SliderDescriptionVertical_Pill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4719072339593620 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997325689525770} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 353777852704801239} + - {fileID: 4730816088910194} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!114 &114575628490289154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997325689525770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 16f35aa6482457046851f086c0b7b324, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BG: {fileID: 4423080799211536} + m_RightCap: {fileID: 1748473933979218} + m_LeftCap: {fileID: 0} + m_TintVisuals: + - {fileID: 23619935002574026} + - {fileID: 23996510484795302} + - {fileID: 23378255582476254} + - {fileID: 5544652876518447854} + m_Text: + - {fileID: 5902178398589492328} + m_UnavailableColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + m_PlaceOnRightEdge: 0 + m_SwitchCaps: 0 + m_DefaultScale: 0.4235 +--- !u!1 &5104181830672000078 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 353777852704801239} + - component: {fileID: 5544652876518447854} + - component: {fileID: 5902178398589492328} + m_Layer: 16 + m_Name: DescriptionTextLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &353777852704801239 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5104181830672000078} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.32} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4719072339593620} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.294, y: 0.971} + m_SizeDelta: {x: 10, y: 0.25} + m_Pivot: {x: 0, y: 1} +--- !u!23 &5544652876518447854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5104181830672000078} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &5902178398589492328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5104181830672000078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Description + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 3.85 + m_fontSizeBase: 3.85 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 5544652876518447854} + m_maskType: 0 diff --git a/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab.meta b/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab.meta new file mode 100644 index 0000000000..32ef1c0cc1 --- /dev/null +++ b/Assets/Prefabs/SliderDescriptionVertical_Pill.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fffc394d878a99d468781b50d53e5edb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab b/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab new file mode 100644 index 0000000000..bde94f9b90 --- /dev/null +++ b/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab @@ -0,0 +1,1038 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1039059812658152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4401778007224324} + m_Layer: 16 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4401778007224324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039059812658152} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4008139922774742} + - {fileID: 4926415686564388} + m_Father: {fileID: 4974388410799054} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1075103291083872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4863253020439994} + - component: {fileID: 114403808906102626} + m_Layer: 16 + m_Name: SliderDescriptionVertical_Pill_TwoLines + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4863253020439994 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1075103291083872} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4845065726837924906} + - {fileID: 7964335755823164065} + - {fileID: 4974388410799054} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!114 &114403808906102626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1075103291083872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 16f35aa6482457046851f086c0b7b324, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BG: {fileID: 4068022327856694} + m_RightCap: {fileID: 1039059812658152} + m_LeftCap: {fileID: 0} + m_TintVisuals: + - {fileID: 23055134206337570} + - {fileID: 23899672226956908} + - {fileID: 23263550306026140} + - {fileID: 729179338462917352} + - {fileID: 4578249849576213564} + m_Text: + - {fileID: 2033705490667070087} + - {fileID: 2207091946775676473} + m_UnavailableColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + m_PlaceOnRightEdge: 0 + m_SwitchCaps: 0 + m_DefaultScale: 0.4235 +--- !u!1 &1232450646587154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4852688723625630} + - component: {fileID: 33743507001873778} + - component: {fileID: 23495573930245876} + m_Layer: 16 + m_Name: CenterBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4852688723625630 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232450646587154} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4068022327856694} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33743507001873778 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232450646587154} + m_Mesh: {fileID: 4300002, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23495573930245876 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232450646587154} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1383466022206060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4068022327856694} + m_Layer: 16 + m_Name: Center + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4068022327856694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383466022206060} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4852688723625630} + - {fileID: 4946762775824472} + m_Father: {fileID: 4974388410799054} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1475690022247710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4008139922774742} + - component: {fileID: 33863324903891838} + - component: {fileID: 23018174175184174} + m_Layer: 16 + m_Name: RightBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4008139922774742 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475690022247710} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4401778007224324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33863324903891838 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475690022247710} + m_Mesh: {fileID: 4300004, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23018174175184174 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475690022247710} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1599386878184812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4974388410799054} + m_Layer: 16 + m_Name: RoundedTooltipMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4974388410799054 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1599386878184812} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.295, y: -0, z: -0.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4114414229266494} + - {fileID: 4068022327856694} + - {fileID: 4401778007224324} + m_Father: {fileID: 4863253020439994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1617426107363530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4114414229266494} + m_Layer: 16 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4114414229266494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617426107363530} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4086127304204970} + - {fileID: 4316336594099042} + m_Father: {fileID: 4974388410799054} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1713375849109820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4316336594099042} + - component: {fileID: 33246371528825008} + - component: {fileID: 23055134206337570} + m_Layer: 16 + m_Name: LeftBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4316336594099042 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713375849109820} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4114414229266494} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33246371528825008 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713375849109820} + m_Mesh: {fileID: 4300006, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23055134206337570 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713375849109820} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1717665191716908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4946762775824472} + - component: {fileID: 33729962248626104} + - component: {fileID: 23899672226956908} + m_Layer: 16 + m_Name: CenterBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4946762775824472 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717665191716908} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4068022327856694} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33729962248626104 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717665191716908} + m_Mesh: {fileID: 4300000, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23899672226956908 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717665191716908} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1817087993932420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4086127304204970} + - component: {fileID: 33970509871018124} + - component: {fileID: 23065162295210484} + m_Layer: 16 + m_Name: LeftBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4086127304204970 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817087993932420} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4114414229266494} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33970509871018124 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817087993932420} + m_Mesh: {fileID: 4300008, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23065162295210484 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817087993932420} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fc985b8d6f54c6645ab36cccbafa6ee6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1991058128693382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4926415686564388} + - component: {fileID: 33816362963710026} + - component: {fileID: 23263550306026140} + m_Layer: 16 + m_Name: RightBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4926415686564388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991058128693382} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.7071067, z: 0.7071068, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 99.99997, z: 99.99997} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4401778007224324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33816362963710026 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991058128693382} + m_Mesh: {fileID: 4300010, guid: b2e44fa23281ca243bd0cde519bdf873, type: 3} +--- !u!23 &23263550306026140 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991058128693382} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f2d6b7b74fe1d7643b9bfc6700026493, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1424296579612529526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4845065726837924906} + - component: {fileID: 729179338462917352} + - component: {fileID: 2033705490667070087} + m_Layer: 16 + m_Name: DescriptionTextLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4845065726837924906 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424296579612529526} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.32} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4863253020439994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.295, y: 1.364} + m_SizeDelta: {x: 10, y: 0.25} + m_Pivot: {x: 0, y: 1} +--- !u!23 &729179338462917352 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424296579612529526} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &2033705490667070087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1424296579612529526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Description + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 3.85 + m_fontSizeBase: 3.85 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 729179338462917352} + m_maskType: 0 +--- !u!1 &1917712957467886031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7964335755823164065} + - component: {fileID: 4578249849576213564} + - component: {fileID: 2207091946775676473} + m_Layer: 16 + m_Name: DescriptionExtraTextLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7964335755823164065 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917712957467886031} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.32} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4863253020439994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.295, y: 0.91499984} + m_SizeDelta: {x: 10, y: 0.25} + m_Pivot: {x: 0, y: 1} +--- !u!23 &4578249849576213564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917712957467886031} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &2207091946775676473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917712957467886031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Description + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4286085240 + m_fontColor: {r: 0.47058824, g: 0.47058824, b: 0.47058824, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 3.21 + m_fontSizeBase: 3.21 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 4578249849576213564} + m_maskType: 0 diff --git a/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab.meta b/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab.meta new file mode 100644 index 0000000000..0325f1033c --- /dev/null +++ b/Assets/Prefabs/SliderDescriptionVertical_Pill_TwoLines.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0ce8c56faa567f438b1a68b3565a078 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab b/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab new file mode 100644 index 0000000000..b21c5017ca --- /dev/null +++ b/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab @@ -0,0 +1,510 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1503094713155990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4073457010706892} + - component: {fileID: 114495678799595950} + - component: {fileID: 114279940278832510} + m_Layer: 16 + m_Name: BrushSettingsTray + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4073457010706892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503094713155990} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.75, y: -0.518, z: 0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4144920620344815534} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114495678799595950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503094713155990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ed240c59f162403a9a7e46111b7eb2ae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_Mesh: {fileID: 1596481825594902} + m_Border: {fileID: 505703257451421084} + m_AnimateSpeed: 8 + m_AnimateRange: {x: 0, y: 1} + m_ShowOnToolType: 10 + m_BrushSizeSlider: {fileID: 584482961708206757} + references: + version: 2 + RefIds: [] +--- !u!114 &114279940278832510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503094713155990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1596481825594902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4418329079800618} + m_Layer: 16 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4418329079800618 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596481825594902} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.000000014901161, y: 0, z: 0} + m_LocalScale: {x: 0.75, y: 0.75, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 529174815131490180} + - {fileID: 529637542510126424} + - {fileID: 1510895170789172903} + m_Father: {fileID: 4144920620344815534} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1895032314352020 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4291139537264568} + - component: {fileID: 65343707767525102} + m_Layer: 16 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4291139537264568 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895032314352020} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4144920620344815534} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &65343707767525102 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895032314352020} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.4, y: 1.7, z: 0.2} + m_Center: {x: 0, y: -0.18, z: 0} +--- !u!1 &527762663584930946 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 529174815131490180} + - component: {fileID: 514358804627021014} + - component: {fileID: 505945780469162462} + m_Layer: 16 + m_Name: PopupBg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &529174815131490180 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527762663584930946} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: -0.41800007, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4418329079800618} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!33 &514358804627021014 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527762663584930946} + m_Mesh: {fileID: 2354710593453032189, guid: 8d7f6f9042de7b848b5659b416329439, type: 3} +--- !u!23 &505945780469162462 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527762663584930946} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &527906196806127360 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 529637542510126424} + - component: {fileID: 513783929244077404} + - component: {fileID: 505703257451421084} + m_Layer: 16 + m_Name: PopupBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &529637542510126424 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527906196806127360} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: -0.418, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4418329079800618} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!33 &513783929244077404 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527906196806127360} + m_Mesh: {fileID: -9015812876457905431, guid: 8d7f6f9042de7b848b5659b416329439, type: 3} +--- !u!23 &505703257451421084 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 527906196806127360} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4746940080256643886 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4144920620344815534} + m_Layer: 16 + m_Name: PivotOffset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4144920620344815534 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4746940080256643886} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4291139537264568} + - {fileID: 4418329079800618} + m_Father: {fileID: 4073457010706892} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &3096697584449339947 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4418329079800618} + m_Modifications: + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_DescriptionText + value: BRUSH_SETTINGS_TRAY_BRUSH_SIZE + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalizedDescription.m_TableEntryReference.m_KeyId + value: 276171365497266176 + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalizedDescription.m_TableReference.m_TableCollectionName + value: GUID:c84355079ab3f3e4f8f3812258805f86 + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 114495678799595950} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnSliderChanged + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.BrushSettingsTray, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: onUpdateValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4471627121253417836, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_Name + value: Brush Size Slider + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.184 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.03 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 93b04d984a8fd234eb4a7227567865a7, type: 3} +--- !u!114 &584482961708206757 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2514466698640951438, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + m_PrefabInstance: {fileID: 3096697584449339947} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 42c914c85d400664c9df3239aafbec71, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1510895170789172903 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4471627121253688460, guid: 93b04d984a8fd234eb4a7227567865a7, + type: 3} + m_PrefabInstance: {fileID: 3096697584449339947} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab.meta b/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab.meta new file mode 100644 index 0000000000..8bd290bbba --- /dev/null +++ b/Assets/Prefabs/UIComponents/BrushSettingsTray.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef594e7ddc7909f429747f1ebbe8af90 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Icons/downarrow.png b/Assets/Resources/Icons/downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..27a413b041b9702adced6d385a3696c3469cf395 GIT binary patch literal 3073 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 literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/downarrow.png.meta b/Assets/Resources/Icons/downarrow.png.meta new file mode 100644 index 0000000000..1c3126550f --- /dev/null +++ b/Assets/Resources/Icons/downarrow.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 73dde82cc4f081546876901bce591a1e +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Icons/uparrow.png b/Assets/Resources/Icons/uparrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd267cd11ebe62dfbea77737bbb4d19910703b4 GIT binary patch literal 3017 zcmbtW2~-nj9-jaSkSfIhf-9J5qzWiG36NkogOZhSNI2A@PLct#kW5G-3CIz^dewT> z(#jzqiY^ra5s!+JD&^2v50I@}fhY)+SBl6|q@}VGL|(hk-F@4g_h#n%&-eR&|NH-D zZ$#L-h4??=0RULY3*l}+-&*5sfkU4+eWBav%TgY)Q3(L=*cfjNP+05$0N520L7Xa% zAIcUXQZgh)gfLknm7{0?SmURWL!x9@1q$IriHt)Uz1lb8J;Jx_6F|S zIc2ECAtk9)ayEscR;$Ts1{qN#QfMp|i$bMS=yZ1!;jT=VsUVHJOu76G0~c0`6cV{g zg2+H4BP2w&t2iXo)Ym>p<@2;Mn&!5-vR$HXfc@;`ka2o2yTtME6RtnPPFl7U* zM7AqLaBv!G=5nJqa(0jchE#|`fFLPvG8OU0WRT7z(-@$OF*#Hgl}475>0V4P&;u5G ziXq4q1YKe!GBKi7y8ea?=0Yl%Loyz6r?Sv=3TQMonp7%v6%}1jUqktbSdx(bRw#>2 z_xK$YttT<0g8nO5EMg}h3MqsJLn4I|VTxRqNCM|W%nm|Q5Cy6jwT>}s1)tC6$&@Nc zCW3if4hfA1St1d$MJ!J*7SogF&JrdhxU)naEO!k`8T327)gyLdYj;&1 zVFEW(TP-v=SvU9{1UklZI(5mvOssm2ZOfIeLNv>rbY{)fJq&$+U8e_c?AQv|7v`nm zteYm`{uO2y1-eNg^Xy?n zZXews?Q<`H^?j$J4G=TLBKeTIrt0FIMlkq#z-Lt|?hc>)fc39z-Qo-?8tI4cyF1-j zkGs;2Ta1hn%lBcO19lb?QwYv&UJ({ma``Un_j;-2uES4mujVE_`Yhr@Q=WDCfO(M_ zu4MR1*%6;}HjnGwF6(j$CxJU|&q`YyU#9h2MwwhYIO5`WPmr54;Jq;~^HEfM%!BVY znFn13ZU@%z%>(%zb}7Fsd)}?HX)GJKx*y{iWaU7|#hEr)O%3j|D5yL?nDy#1V!usN zx%8Ie<>6)V0lnmH5gQ|mx6$v$v>lX1_g(n8{`Ft7PE=OlRnb~A zX79=cPLq~jy7})tFr6h@AB7FOEWpH^ner80p;lZy3N&%pgy8*1BWKiPb;g}ub=Z%K ziet48ix0by&K_uDg#+$0uar;6Qth|he?i1=y_(yHuRXGdy9jESdFqYHKIUf?yr*Uh zQH}A*^|xj9=*mr+6{#+P&1II>bee8*#B21~(?jp^2xl9BluMhBmzD)RaaSM3w3!y;{cMEf@uEp5ODX$k>qSGuNHT= zw4c>Etvdo@4-&ug?V8pe0mnTtKQjFeIk)LU0D6qSa5lZ!)ZP7h}k<1=FPQQ_{qis7Mxw`+;%>+ zu{)#f!3LIf=;^Z!SI@65q0ek09EGpcckOFU3$kywGo(_%w+X>nPXrA4ZQ@_@CdGz>S7VZu=A9N`{obL;g#9_;gZPC)mcq@s__hK|fS z7smMB`fe^|#J;Rs+mzW?En8w^wK+q!#B>ujv%l{Yarj~?6v2>xce(Ju{>a7c>)2^l z535DLo=)iRs$-&Vz%*7*4BRzMSn-ew+n22A zi?Oe5Juzuf(9+JFA@}?=oyg>$Z?3o*InW=T(bMt$X3S5v{vOXA;4NDuxa?~Vg+Rdy zOTDh|X!;q6zV|0i8DcNb%*(mYUlIRIov`U~5y|gXbcx%w;W)HIwIbCTgH_Ffp~=%X z?u9Nq#qd*oYH^^Qa{@d)hQvp$-A;#!GwKr1## z@Z@<&&g#V@grCpo#)B^>_b+`EUA^wo@QvD`zzz|td3A1782oL=*M#^F^2=Sb>|X5B zpQ_5bGw{vDaeV&F-m;cS9T5KVA@k^&v5GhhrERHq3?+%^XIW6`X4_Vju|9a|7bT5$ zwuVCsmb^$9{j@HkV|1h45BStCCOy=8eg56pj8SVP uwI2_aIx=^+4qP|cnzX-%Ziw<)Z^&^;VPpN;eoiy~Z1aM{xaR`5<^2<-EUBmf literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/uparrow.png.meta b/Assets/Resources/Icons/uparrow.png.meta new file mode 100644 index 0000000000..f5706f0ece --- /dev/null +++ b/Assets/Resources/Icons/uparrow.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: e5a95db3eceb2ac48bd574c538be1470 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/ImmersiveDebuggerSettings.asset b/Assets/Resources/ImmersiveDebuggerSettings.asset new file mode 100644 index 0000000000..db2346a4b1 --- /dev/null +++ b/Assets/Resources/ImmersiveDebuggerSettings.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a7d75bea1662418ab5f9e0c22110bc09, type: 3} + m_Name: ImmersiveDebuggerSettings + m_EditorClassIdentifier: + debugTypes: [] + immersiveDebuggerEnabled: 0 + immersiveDebuggerDisplayAtStartup: 0 + immersiveDebuggerToggleDisplayButton: 2 + showInspectors: 0 + showConsole: 0 + followOverride: 1 + rotateOverride: 0 + showInfoLog: 0 + showWarningLog: 1 + showErrorLog: 1 + collapsedIdenticalLogEntries: 0 + maximumNumberOfLogEntries: 1000 + panelDistance: 1 + createEventSystem: 1 + automaticLayerCullingUpdate: 1 + panelLayer: 20 + meshRendererLayer: 21 + overlayDepth: 10 + inspectedDataEnabled: + inspectedDataAssets: [] + useCustomIntegrationConfig: 0 + customIntegrationConfigClassName: diff --git a/Assets/Resources/ImmersiveDebuggerSettings.asset.meta b/Assets/Resources/ImmersiveDebuggerSettings.asset.meta new file mode 100644 index 0000000000..c4369a5c1f --- /dev/null +++ b/Assets/Resources/ImmersiveDebuggerSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe1e377f71ef6c54ba04c979771ecd67 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/InputActions.asset b/Assets/Resources/InputActions.asset new file mode 100644 index 0000000000..864b96ca09 --- /dev/null +++ b/Assets/Resources/InputActions.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8922a6ca86889d84f8371a29d37b6dc8, type: 3} + m_Name: InputActions + m_EditorClassIdentifier: + InputActionDefinitions: [] + InputActionSets: + - {fileID: 11400000, guid: 07d8104174d1046e3aa835ff86c10080, type: 2} diff --git a/Assets/Resources/InputActions.asset.meta b/Assets/Resources/InputActions.asset.meta new file mode 100644 index 0000000000..dc7e056742 --- /dev/null +++ b/Assets/Resources/InputActions.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c634622f3dfcd4448b431ceff8e2ff2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/OculusPlatformSettings.asset b/Assets/Resources/OculusPlatformSettings.asset new file mode 100644 index 0000000000..ae4e24895e --- /dev/null +++ b/Assets/Resources/OculusPlatformSettings.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b3d881e962d099f4a8eb492ef7e9a8c0, type: 3} + m_Name: OculusPlatformSettings + m_EditorClassIdentifier: + ovrAppID: 5227489953989768 + ovrMobileAppID: 3600360710032222 + ovrUseStandalonePlatform: 0 diff --git a/Assets/Resources/OculusPlatformSettings.asset.meta b/Assets/Resources/OculusPlatformSettings.asset.meta new file mode 100644 index 0000000000..68e693ec06 --- /dev/null +++ b/Assets/Resources/OculusPlatformSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d2d77ef42bddd94991549d5f80ce6ae +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index a244127cfd..55c188aed8 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -3698,6 +3698,10 @@ MonoBehaviour: type: 3} m_SliderDescriptionTwoLinesPrefab: {fileID: 1075103291083872, guid: 9473e6ac1bd905b42b3ab718e61edaa2, type: 3} + m_VerticalSliderDescriptionOneLinePrefab: {fileID: 1997325689525770, guid: fffc394d878a99d468781b50d53e5edb, + type: 3} + m_VerticalSliderDescriptionTwoLinesPrefab: {fileID: 1075103291083872, guid: d0ce8c56faa567f438b1a68b3565a078, + type: 3} m_PreviewCubeDescriptionOneLinePrefab: {fileID: 1083040994653220, guid: 4008b21a5ab500743beaafe495d976a7, type: 3} m_PreviewCubeDescriptionTwoLinesPrefab: {fileID: 1083040994653220, guid: a8af8f97b474d2247a17f4c6d100630a, @@ -17107,6 +17111,10 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 4000013585580318, guid: dedd7823645ca60468aca5f2ff1b9a7f, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1814796582} - targetCorrespondingSourceObject: {fileID: 4000011853176074, guid: dedd7823645ca60468aca5f2ff1b9a7f, type: 3} insertIndex: -1 @@ -30856,6 +30864,12 @@ MeshRenderer: type: 3} m_PrefabInstance: {fileID: 2124612094} m_PrefabAsset: {fileID: 0} +--- !u!4 &1814796582 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + m_PrefabInstance: {fileID: 1971022075} + m_PrefabAsset: {fileID: 0} --- !u!1 &1815866264 GameObject: m_ObjectHideFlags: 0 @@ -33193,6 +33207,74 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &1971022075 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 17776369} + m_Modifications: + - target: {fileID: 1077171487981709975, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_Name + value: MX_Ink + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1857229286467065778, guid: cb1310f64dd794703964833b63e87d96, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: cb1310f64dd794703964833b63e87d96, type: 3} --- !u!1 &1972541290 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs index 7ff74dcbbb..efadeeb3db 100644 --- a/Assets/Scripts/Config.cs +++ b/Assets/Scripts/Config.cs @@ -66,8 +66,9 @@ public enum DescriptionType { None = -1, Button = 0, - Slider, - PreviewCube, + Slider = 1, + PreviewCube = 2, + VerticalSlider = 3, } /// Script Ordering: @@ -223,6 +224,8 @@ public bool IsMobileHardware [SerializeField] GameObject m_ButtonDescriptionThreeLinesPrefab; [SerializeField] GameObject m_SliderDescriptionOneLinePrefab; [SerializeField] GameObject m_SliderDescriptionTwoLinesPrefab; + [SerializeField] GameObject m_VerticalSliderDescriptionOneLinePrefab; + [SerializeField] GameObject m_VerticalSliderDescriptionTwoLinesPrefab; [SerializeField] GameObject m_PreviewCubeDescriptionOneLinePrefab; [SerializeField] GameObject m_PreviewCubeDescriptionTwoLinesPrefab; @@ -254,6 +257,16 @@ public GameObject CreateDescriptionFor(DescriptionType type, int numberOfLines) default: throw new Exception($"{type} description does not have a ${numberOfLines} line variant"); } + case DescriptionType.VerticalSlider: + switch (numberOfLines) + { + case 1: + return Instantiate(m_VerticalSliderDescriptionOneLinePrefab); + case 2: + return Instantiate(m_VerticalSliderDescriptionTwoLinesPrefab); + default: + throw new Exception($"{type} description does not have a ${numberOfLines} line variant"); + } case DescriptionType.PreviewCube: switch (numberOfLines) { diff --git a/Assets/Scripts/GUI/BaseSlider.cs b/Assets/Scripts/GUI/BaseSlider.cs index ab2bb0b54a..c644ba998f 100644 --- a/Assets/Scripts/GUI/BaseSlider.cs +++ b/Assets/Scripts/GUI/BaseSlider.cs @@ -20,8 +20,16 @@ namespace TiltBrush public class BaseSlider : UIComponent { + [Serializable] + public enum Orientation + { + Horizontal, + Vertical + } + [SerializeField] public GameObject m_Nob; [SerializeField] private Renderer m_Mesh; + [SerializeField] private Orientation m_Orientation; [NonSerialized] public Vector3 m_MeshScale; protected float m_CurrentValue; @@ -36,6 +44,11 @@ protected void SetAvailable(bool available) { m_IsAvailable = available; SetDescriptionVisualsAvailable(m_IsAvailable); + if (m_Orientation == Orientation.Vertical) + { + // Fix distortion due to the parent having a non-uniform scale. + m_Description.transform.localScale = Vector3.one; + } } override protected void Awake() @@ -83,7 +96,15 @@ public virtual void SetSliderPositionToReflectValue() if (m_Nob != null) { Vector3 vLocalPos = m_Nob.transform.localPosition; - vLocalPos.x = (m_CurrentValue - 0.5f) * m_MeshScale.x; + switch (m_Orientation) + { + case Orientation.Horizontal: + vLocalPos.x = (m_CurrentValue - 0.5f) * m_MeshScale.x; + break; + case Orientation.Vertical: + vLocalPos.y = (m_CurrentValue - 0.5f) * m_MeshScale.x; + break; + } m_Nob.transform.localPosition = vLocalPos; } } @@ -122,12 +143,25 @@ protected void PositionSliderNob(Vector3 pos_WS) { m_Nob.transform.position = pos_WS; Vector3 vLocalPos = m_Nob.transform.localPosition; - float fScaledBounds = 0.5f * m_MeshScale.x; - vLocalPos.x = Mathf.Clamp(vLocalPos.x, -fScaledBounds, fScaledBounds); - vLocalPos.y = 0.0f; + float fScaledBounds; + float fValue = 0; + switch (m_Orientation) + { + case Orientation.Horizontal: + fScaledBounds = 0.5f * m_MeshScale.x; + vLocalPos.x = Mathf.Clamp(vLocalPos.x, -fScaledBounds, fScaledBounds); + vLocalPos.y = 0.0f; + fValue = (vLocalPos.x / m_MeshScale.x) + 0.5f; + break; + case Orientation.Vertical: + fScaledBounds = 0.5f * m_MeshScale.x; + vLocalPos.x = 0.0f; + vLocalPos.y = Mathf.Clamp(vLocalPos.y, -fScaledBounds, fScaledBounds); + fValue = (vLocalPos.y / m_MeshScale.x) + 0.5f; + break; + } vLocalPos.z = 0.0f; m_Nob.transform.localPosition = vLocalPos; - float fValue = (vLocalPos.x / m_MeshScale.x) + 0.5f; UpdateValue(fValue); OnPositionSliderNobUpdated(); } diff --git a/Assets/Scripts/GUI/BaseTray.cs b/Assets/Scripts/GUI/BaseTray.cs index 6d860f4745..51f5b9f63a 100644 --- a/Assets/Scripts/GUI/BaseTray.cs +++ b/Assets/Scripts/GUI/BaseTray.cs @@ -20,14 +20,14 @@ namespace TiltBrush public abstract class BaseTray : UIComponent { - [SerializeField] private GameObject m_Mesh; + [SerializeField] protected GameObject m_Mesh; [SerializeField] private Renderer m_Border; [SerializeField] private float m_AnimateSpeed; - [SerializeField] private Vector2 m_AnimateRange; + [SerializeField] protected Vector2 m_AnimateRange; private UIComponentManager m_UIComponentManager; private Coroutine m_AnimationCoroutine; - private bool m_AnimateIn; + protected bool m_AnimateIn; private bool m_AnimateWhenEnabled; public BaseTool.ToolType m_ShowOnToolType; @@ -130,22 +130,27 @@ protected virtual void OnToolChanged() m_ShowOnToolType; if (isSelectionTool != m_AnimateIn) { - if (m_AnimationCoroutine != null) - { - StopCoroutine(m_AnimationCoroutine); - } - m_AnimateIn = !m_AnimateIn; + DoAnimateIn(); + } + } - // If we get a callback that our tool changed while we're inactive, don't try to - // start our coroutine until we've been enabled. - if (isActiveAndEnabled) - { - m_AnimationCoroutine = StartCoroutine(Animate()); - } - else - { - m_AnimateWhenEnabled = true; - } + public void DoAnimateIn() + { + if (m_AnimationCoroutine != null) + { + StopCoroutine(m_AnimationCoroutine); + } + m_AnimateIn = !m_AnimateIn; + + // If we get a callback that our tool changed while we're inactive, don't try to + // start our coroutine until we've been enabled. + if (isActiveAndEnabled) + { + m_AnimationCoroutine = StartCoroutine(Animate()); + } + else + { + m_AnimateWhenEnabled = true; } } diff --git a/Assets/Scripts/GUI/BrushSettingsTray.cs b/Assets/Scripts/GUI/BrushSettingsTray.cs new file mode 100644 index 0000000000..a7064ca565 --- /dev/null +++ b/Assets/Scripts/GUI/BrushSettingsTray.cs @@ -0,0 +1,87 @@ +// Copyright 2024 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using UnityEngine; +using UnityEngine.XR; + +namespace TiltBrush +{ + public class BrushSettingsTray : BaseTray + { + [SerializeField] private AdvancedSlider m_BrushSizeSlider; + + protected override void Awake() + { + base.Awake(); + App.Switchboard.BrushSizeChanged += UpdateSliderToMatchCurrentSize; + } + + protected override void OnDestroy() + { + base.OnDestroy(); + App.Switchboard.ToolChanged -= UpdateSliderToMatchCurrentSize; + } + + private void DetectSupportedDevices() + { + // Currently only the Logitech stylus needs this panel + bool needsBrushSizeUI = VrStylusHandler.m_Instance.CurrentState.isActive; + + // DoAnimateIn performs a toggle so we have to also check the state + if (needsBrushSizeUI) + { + if (!m_AnimateIn) + { + DoAnimateIn(); + UpdateSliderToMatchCurrentSize(); + } + } + else + { + if (m_AnimateIn) + { + DoAnimateIn(); + } + } + } + + private void UpdateSliderToMatchCurrentSize() + { + m_BrushSizeSlider.SetInitialValueAndUpdate( + PointerManager.m_Instance.MainPointer.BrushSize01 + ); + } + + protected override void Start() + { + base.Start(); + + // Call DetectSupportedDevice every second + InvokeRepeating(nameof(DetectSupportedDevices), 0.0f, 1); + } + + protected override void OnToolChanged() + { + UpdateSliderToMatchCurrentSize(); + } + + public void OnSliderChanged(Vector3 value) + { + PointerManager.m_Instance.SetAllPointersBrushSize01(value.z); + PointerManager.m_Instance.MarkAllBrushSizeUsed(); + } + } + +} // namespace TiltBrush diff --git a/Assets/Scripts/GUI/BrushSettingsTray.cs.meta b/Assets/Scripts/GUI/BrushSettingsTray.cs.meta new file mode 100644 index 0000000000..1d2cf055a4 --- /dev/null +++ b/Assets/Scripts/GUI/BrushSettingsTray.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ed240c59f162403a9a7e46111b7eb2ae +timeCreated: 1725121184 \ No newline at end of file diff --git a/Assets/Scripts/Input/UnityXRControllerInfo.cs b/Assets/Scripts/Input/UnityXRControllerInfo.cs index 1926f46657..3d7707137b 100644 --- a/Assets/Scripts/Input/UnityXRControllerInfo.cs +++ b/Assets/Scripts/Input/UnityXRControllerInfo.cs @@ -15,6 +15,7 @@ using UnityEngine; using UnityEngine.XR; using UnityEngine.InputSystem; +using System; namespace TiltBrush { @@ -28,6 +29,8 @@ public class UnityXRControllerInfo : ControllerInfo private bool isBrush = false; + private StylusInputs stylusState => VrStylusHandler.m_Instance.CurrentState; + private string actionMap { get => isBrush ? "Brush" : "Wand"; @@ -128,6 +131,11 @@ public override void Update() } } + private bool IsStylusActive() + { + return stylusState.isActive && isBrush; + } + public override Vector2 GetPadValueDelta() { var action = FindAction("ThumbAxis"); @@ -175,6 +183,12 @@ public override float GetScrollYDelta() public override float GetGripValue() { +#if OCULUS_SUPPORTED + if (IsStylusActive()) + { + return stylusState.cluster_front_value ? 1.0f : 0; + } +#endif return FindAction("GripAxis").ReadValue(); } @@ -185,6 +199,12 @@ public override float GetTriggerRatio() public override float GetTriggerValue() { +#if OCULUS_SUPPORTED + if (IsStylusActive()) + { + return Math.Max(stylusState.tip_value, stylusState.cluster_middle_value); + } +#endif return FindAction("TriggerAxis").ReadValue(); } @@ -227,12 +247,24 @@ private bool MapVrInput(VrInput input) case VrInput.Touchpad: return FindAction("PadButton").IsPressed(); case VrInput.Trigger: +#if OCULUS_SUPPORTED + if (IsStylusActive()) + return stylusState.cluster_middle_value > 0.2 || stylusState.tip_value > 0.2; +#endif return FindAction("TriggerAxis").IsPressed(); case VrInput.Grip: +#if OCULUS_SUPPORTED + if (IsStylusActive()) + return stylusState.cluster_front_value; +#endif return FindAction("GripAxis").IsPressed(); case VrInput.Button01: case VrInput.Button04: case VrInput.Button06: +#if OCULUS_SUPPORTED + if (IsStylusActive()) + return stylusState.cluster_back_value; +#endif return FindAction("PrimaryButton").IsPressed(); case VrInput.Button02: case VrInput.Button03: diff --git a/Assets/Scripts/InputManager.cs b/Assets/Scripts/InputManager.cs index 666a87181b..e0b898a0fe 100644 --- a/Assets/Scripts/InputManager.cs +++ b/Assets/Scripts/InputManager.cs @@ -457,6 +457,11 @@ public void ShowControllers(bool show) } } + public void ShowController(bool show, int index) + { + m_ControllerInfos[index].ShowController(m_ControllerInfos[index].IsTrackedObjectValid && show); + } + void OnDestroy() { App.VrSdk.OnNewControllerPosesApplied -= OnControllerPosesApplied; diff --git a/Assets/Scripts/Switchboard.cs b/Assets/Scripts/Switchboard.cs index a5795b23a4..d91744c3e6 100644 --- a/Assets/Scripts/Switchboard.cs +++ b/Assets/Scripts/Switchboard.cs @@ -18,6 +18,7 @@ namespace TiltBrush { public class Switchboard { + public event Action BrushSizeChanged; public event Action ToolChanged; public event Action MirrorVisibilityChanged; public event Action PanelDismissed; @@ -50,6 +51,11 @@ public void TriggerToolChanged() ToolChanged?.Invoke(); } + public void TriggerBrushSizeChanged() + { + BrushSizeChanged?.Invoke(); + } + public void TriggerMirrorVisibilityChanged() { MirrorVisibilityChanged?.Invoke(); diff --git a/Assets/Scripts/Tools/FreePaintTool.cs b/Assets/Scripts/Tools/FreePaintTool.cs index 75a407c46b..c033b27843 100644 --- a/Assets/Scripts/Tools/FreePaintTool.cs +++ b/Assets/Scripts/Tools/FreePaintTool.cs @@ -246,6 +246,7 @@ override public void UpdateSize(float fAdjustAmount) float fPrevRatio = GetSize01(); PointerManager.m_Instance.AdjustAllPointersBrushSize01(m_AdjustSizeScalar * fAdjustAmount); PointerManager.m_Instance.MarkAllBrushSizeUsed(); + App.Switchboard.TriggerBrushSizeChanged(); float fCurrentRatio = GetSize01(); float fHalfInterval = m_HapticInterval * 0.5f; diff --git a/Assets/Settings/Localization/Strings/Strings Shared Data.asset b/Assets/Settings/Localization/Strings/Strings Shared Data.asset index c60ef0817e..4aaa38e1db 100644 --- a/Assets/Settings/Localization/Strings/Strings Shared Data.asset +++ b/Assets/Settings/Localization/Strings/Strings Shared Data.asset @@ -3327,6 +3327,10 @@ MonoBehaviour: m_Key: PANEL_REFERENCE_ICONIMAGE_GENERICERRORTEXT m_Metadata: m_Items: [] + - m_Id: 276171365497266176 + m_Key: BRUSH_SETTINGS_TRAY_BRUSH_SIZE + m_Metadata: + m_Items: [] m_Metadata: m_Items: [] m_KeyGenerator: diff --git a/Assets/Settings/Localization/Strings/Strings_en.asset b/Assets/Settings/Localization/Strings/Strings_en.asset index dc601834e7..0c50b585da 100644 --- a/Assets/Settings/Localization/Strings/Strings_en.asset +++ b/Assets/Settings/Localization/Strings/Strings_en.asset @@ -3524,6 +3524,10 @@ MonoBehaviour: m_Localized: Image failed to load m_Metadata: m_Items: [] + - m_Id: 276171365497266176 + m_Localized: Brush Size + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/ThirdParty/Logitech.meta b/Assets/ThirdParty/Logitech.meta new file mode 100644 index 0000000000..be71aa9288 --- /dev/null +++ b/Assets/ThirdParty/Logitech.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a58f9aa1d124894d805c8ba777630fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Drawing.prefab b/Assets/ThirdParty/Logitech/Drawing.prefab new file mode 100644 index 0000000000..5a4da5c140 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Drawing.prefab @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &9040741508780558455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4400860977171399285} + - component: {fileID: 3911681506184564244} + m_Layer: 0 + m_Name: Drawing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4400860977171399285 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9040741508780558455} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3911681506184564244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9040741508780558455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b2eeca68c07d4128b1f44e35fed30a1, type: 3} + m_Name: + m_EditorClassIdentifier: + _maxLineWidth: 0.005 + _minLineWidth: 0.0005 + _material: {fileID: 2100000, guid: a0f85b09888a44a54ac7194c1e11fb46, type: 2} + _currentColor: {r: 0, g: 0, b: 0, a: 0} + longPressDuration: 1 + _stylusHandler: {fileID: 0} diff --git a/Assets/ThirdParty/Logitech/Drawing.prefab.meta b/Assets/ThirdParty/Logitech/Drawing.prefab.meta new file mode 100644 index 0000000000..cc903cef9c --- /dev/null +++ b/Assets/ThirdParty/Logitech/Drawing.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a266ea46e711b4d8f99c27c3a280d5be +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Images.meta b/Assets/ThirdParty/Logitech/Images.meta new file mode 100644 index 0000000000..104121440a --- /dev/null +++ b/Assets/ThirdParty/Logitech/Images.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63a7fb1c3ecb4564c8828dbc9f77be72 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png b/Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..44cc05c6849d4706936509a94576cf52a02236b5 GIT binary patch literal 45670 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 literal 0 HcmV?d00001 diff --git a/Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png.meta b/Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png.meta new file mode 100644 index 0000000000..3be5b3498c --- /dev/null +++ b/Assets/ThirdParty/Logitech/Images/logitech_vr_stylus_texture_v1.1.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 153388c4067a040159a392c0c78bfa78 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/MX_Ink.prefab b/Assets/ThirdParty/Logitech/MX_Ink.prefab new file mode 100644 index 0000000000..74db569f72 --- /dev/null +++ b/Assets/ThirdParty/Logitech/MX_Ink.prefab @@ -0,0 +1,175 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1077171487981709975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1857229286467065778} + - component: {fileID: 4014782369789234104} + m_Layer: 0 + m_Name: MX_Ink + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1857229286467065778 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077171487981709975} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7920969980687411610} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4014782369789234104 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077171487981709975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c1222192c234c4632aad833e6696c2d5, type: 3} + m_Name: + m_EditorClassIdentifier: + _mxInk_model: {fileID: 7396916743439364896} + _tip: {fileID: 4338285541321202723} + _cluster_front: {fileID: 689178473153335378} + _cluster_middle: {fileID: 8881577570454616313} + _cluster_back: {fileID: 4121183609491545851} + active_color: {r: 0.6886792, g: 0.6886792, b: 0.6886792, a: 1} + double_tap_active_color: {r: 0, g: 1, b: 1, a: 1} + default_color: {r: 0.14150941, g: 0.13550194, b: 0.13550194, a: 1} +--- !u!1001 &8414709874766261035 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1857229286467065778} + m_Modifications: + - target: {fileID: 1324109529956063243, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_Name + value: logitech_vr_stylus_v1.0 + objectReference: {fileID: 0} + - target: {fileID: 1324109529956063243, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0075 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.003 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4379063982285912482, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: hapticClip + value: + objectReference: {fileID: 2460798210113038985, guid: dde55e13c542f48c186587cca063eac8, + type: 3} + - target: {fileID: 4379063982285912482, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + propertyPath: legacy_mode + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 90df24c7a15784ca7a0a300d072cba39, type: 3} +--- !u!1 &689178473153335378 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9031821886481021817, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} +--- !u!1 &4121183609491545851 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5617797037434992080, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} +--- !u!1 &4338285541321202723 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5256723013491226376, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} +--- !u!1 &7396916743439364896 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1324109529956063243, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7920969980687411610 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1813822785949909681, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} +--- !u!1 &8881577570454616313 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1118790130344924114, guid: 90df24c7a15784ca7a0a300d072cba39, + type: 3} + m_PrefabInstance: {fileID: 8414709874766261035} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/ThirdParty/Logitech/MX_Ink.prefab.meta b/Assets/ThirdParty/Logitech/MX_Ink.prefab.meta new file mode 100644 index 0000000000..5a5a1d1daf --- /dev/null +++ b/Assets/ThirdParty/Logitech/MX_Ink.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cb1310f64dd794703964833b63e87d96 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Materials.meta b/Assets/ThirdParty/Logitech/Materials.meta new file mode 100644 index 0000000000..4bdc89e3ca --- /dev/null +++ b/Assets/ThirdParty/Logitech/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca1a630445b6c1a40adca3cdada1b2fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat b/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat new file mode 100644 index 0000000000..729394a725 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlueInkSprite + m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - PixelSnap: 0 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnableExternalAlpha: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.066037714, g: 0.06448022, b: 0.22352941, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Flip: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat.meta b/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat.meta new file mode 100644 index 0000000000..ecd0feb448 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Materials/BlueInkSprite.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0f85b09888a44a54ac7194c1e11fb46 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat b/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat new file mode 100644 index 0000000000..b435dd0539 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Logitech_Stylus_Material_v1.0 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 153388c4067a040159a392c0c78bfa78, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat.meta b/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat.meta new file mode 100644 index 0000000000..0d57a70c9f --- /dev/null +++ b/Assets/ThirdParty/Logitech/Materials/Logitech_Stylus_Material_v1.0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35c401a1bc7464ba99b7753943dbce2e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Models.meta b/Assets/ThirdParty/Logitech/Models.meta new file mode 100644 index 0000000000..9550076a8b --- /dev/null +++ b/Assets/ThirdParty/Logitech/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d64569b2695758c468d6aa9adb0126a8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx b/Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx new file mode 100644 index 0000000000000000000000000000000000000000..d9a364dd4d421cb5c05f2ebde38233f0a19fdad0 GIT binary patch literal 251676 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

*+u#BS9lVb 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

    U>>o*PQ@nsp>}zd+(hJ)ZHOdevwpa?f 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 literal 0 HcmV?d00001 diff --git a/Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx.meta b/Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx.meta new file mode 100644 index 0000000000..faf9f21d3d --- /dev/null +++ b/Assets/ThirdParty/Logitech/Models/logitech_vr_stylus_v1.0.fbx.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 2fd5897dba61142d595b2d392a956e8e +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/MxInkActions.asset b/Assets/ThirdParty/Logitech/MxInkActions.asset new file mode 100644 index 0000000000..6067c82416 --- /dev/null +++ b/Assets/ThirdParty/Logitech/MxInkActions.asset @@ -0,0 +1,74 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4c9e57bb38d16564c9d1040c6f1a93f5, type: 3} + m_Name: MxInkActions + m_EditorClassIdentifier: + InteractionProfile: /interaction_profiles/logitech/mx_ink_stylus_logitech + InputActionDefinitions: + - ActionName: middle + Type: 2 + Paths: + - /user/hand/left/input/cluster_middle_logitech/force + - /user/hand/right/input/cluster_middle_logitech/force + - ActionName: tip + Type: 2 + Paths: + - /user/hand/left/input/tip_logitech/force + - /user/hand/right/input/tip_logitech/force + - ActionName: front + Type: 1 + Paths: + - /user/hand/left/input/cluster_front_logitech/click + - /user/hand/right/input/cluster_front_logitech/click + - ActionName: back + Type: 1 + Paths: + - /user/hand/left/input/cluster_back_logitech/click + - /user/hand/right/input/cluster_back_logitech/click + - ActionName: grip + Type: 4 + Paths: + - /user/hand/left/input/grip/pose + - /user/hand/right/input/grip/pose + - ActionName: aim_right + Type: 4 + Paths: + - /user/hand/right/input/aim/pose + - ActionName: docked + Type: 1 + Paths: + - /user/hand/left/input/dock_logitech/docked_logitech + - /user/hand/right/input/dock_logitech/docked_logitech + - ActionName: back_double_tap + Type: 1 + Paths: + - /user/hand/left/input/cluster_back_logitech/double_tap_logitech + - /user/hand/right/input/cluster_back_logitech/double_tap_logitech + - ActionName: front_double_tap + Type: 1 + Paths: + - /user/hand/left/input/cluster_front_logitech/double_tap_logitech + - /user/hand/right/input/cluster_front_logitech/double_tap_logitech + - ActionName: aim_left + Type: 4 + Paths: + - /user/hand/left/input/aim/pose + - ActionName: haptic_pulse + Type: 100 + Paths: + - /user/hand/left/output/haptic + - /user/hand/right/output/haptic + - ActionName: dock + Type: 1 + Paths: + - /user/hand/left/input/dock_logitech/docked_logitech + - /user/hand/right/input/dock_logitech/docked_logitech diff --git a/Assets/ThirdParty/Logitech/MxInkActions.asset.meta b/Assets/ThirdParty/Logitech/MxInkActions.asset.meta new file mode 100644 index 0000000000..8313962ba9 --- /dev/null +++ b/Assets/ThirdParty/Logitech/MxInkActions.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07d8104174d1046e3aa835ff86c10080 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Scripts.meta b/Assets/ThirdParty/Logitech/Scripts.meta new file mode 100644 index 0000000000..44e0715ac4 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8388b336c347a7d40a595840a8ef956c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs b/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs new file mode 100644 index 0000000000..b22ebf1c49 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +public class LineDrawing : MonoBehaviour +{ +#if OCULUS_SUPPORTED + private List _lines = new List(); + private LineRenderer _currentLine; + private List _currentLineWidths = new List(); //list to store line widths + + [SerializeField] float _maxLineWidth = 0.01f; + [SerializeField] float _minLineWidth = 0.0005f; + + [SerializeField] Material _material; + + [SerializeField] private Color _currentColor; + public Color CurrentColor + { + get { return _currentColor; } + set + { + _currentColor = value; + } + } + + public float MaxLineWidth + { + get { return _maxLineWidth; } + set { _maxLineWidth = value; } + } + + private bool _lineWidthIsFixed = false; + public bool LineWidthIsFixed + { + get { return _lineWidthIsFixed; } + set { _lineWidthIsFixed = value; } + } + + private bool _isDrawing = false; + private bool _doubleTapDetected = false; + + [SerializeField] + private float longPressDuration = 1.0f; + private float buttonPressedTimestamp = 0; + + [SerializeField] + private StylusHandler _stylusHandler; + + private Vector3 _previousLinePoint; + private const float _minDistanceBetweenLinePoints = 0.0005f; + + private void StartNewLine() + { + var gameObject = new GameObject("line"); + LineRenderer lineRenderer = gameObject.AddComponent(); + _currentLine = lineRenderer; + _currentLine.positionCount = 0; + _currentLine.material = _material; + _currentLine.material.color = _currentColor; + _currentLine.loop = false; + _currentLine.startWidth = _minLineWidth; + _currentLine.endWidth = _minLineWidth; + _currentLine.useWorldSpace = true; + _currentLine.widthCurve = new AnimationCurve(); + _currentLineWidths = new List(); + _currentLine.shadowCastingMode = ShadowCastingMode.Off; + _currentLine.receiveShadows = false; + _lines.Add(gameObject); + _previousLinePoint = new Vector3(0, 0, 0); + } + + private void AddPoint(Vector3 position, float width) + { + if (Vector3.Distance(position, _previousLinePoint) > _minDistanceBetweenLinePoints) + { + _previousLinePoint = position; + _currentLine.positionCount++; + _currentLineWidths.Add(Math.Max(width * _maxLineWidth, _minLineWidth)); + _currentLine.SetPosition(_currentLine.positionCount - 1, position); + + //create a new AnimationCurve + AnimationCurve curve = new AnimationCurve(); + + //populate the curve with keyframes based on the widths list + if (_currentLineWidths.Count > 1) + { + for (int i = 0; i < _currentLineWidths.Count; i++) + { + curve.AddKey(i / (float)(_currentLineWidths.Count - 1), _currentLineWidths[i]); + } + } + else + { + curve.AddKey(0, _currentLineWidths[0]); + } + + //assign the curve to the widthCurve + _currentLine.widthCurve = curve; + } + } + + private void RemoveLastLine() + { + GameObject lastLine = _lines[_lines.Count - 1]; + _lines.RemoveAt(_lines.Count - 1); + + Destroy(lastLine); + } + + private void ClearAllLines() + { + foreach (var line in _lines) + { + Destroy(line); + } + _lines.Clear(); + } + + void Update() + { + + float analogInput = Mathf.Max(_stylusHandler.CurrentState.tip_value, _stylusHandler.CurrentState.cluster_middle_value); + + if (analogInput > 0 && _stylusHandler.CanDraw()) + { + if (!_isDrawing) + { + StartNewLine(); + _isDrawing = true; + } + AddPoint(_stylusHandler.CurrentState.inkingPose.position, _lineWidthIsFixed ? 1.0f : analogInput); + } + else + { + _isDrawing = false; + } + + //Undo by double tapping or clicking on cluster_back button on stylus + if (_stylusHandler.CurrentState.cluster_back_double_tap_value || + _stylusHandler.CurrentState.cluster_back_value) + { + if (_lines.Count > 0 && !_doubleTapDetected) + { + buttonPressedTimestamp = Time.time; + RemoveLastLine(); + } + _doubleTapDetected = true; + if (_lines.Count > 0 && Time.time >= (buttonPressedTimestamp + longPressDuration)) + { + ClearAllLines(); + } + } + else + { + _doubleTapDetected = false; + } + } +#endif +} diff --git a/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs.meta b/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs.meta new file mode 100644 index 0000000000..4a4be4420f --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/LineDrawing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b2eeca68c07d4128b1f44e35fed30a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs b/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs new file mode 100644 index 0000000000..88654b0752 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +public class StylusInputs +{ + public float tip_value; + public bool cluster_front_value; + public float cluster_middle_value; + public bool cluster_back_value; + public bool cluster_back_double_tap_value; + public bool any; + public Pose inkingPose; + public bool positionIsTracked; + public bool positionIsValid; + public float batteryLevel; + public bool isActive; + public bool isOnRightHand; + public bool docked; +} + +public abstract class StylusHandler : MonoBehaviour +{ + protected StylusInputs _stylus; + + public StylusInputs CurrentState + { + get { return _stylus; } + } + + public virtual bool CanDraw() + { + return true; + } +} diff --git a/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs.meta b/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs.meta new file mode 100644 index 0000000000..a9a16045d3 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/StylusHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b9b259c02b092426f81ec985c27e78b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs b/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs new file mode 100644 index 0000000000..97e5d7ef55 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs @@ -0,0 +1,221 @@ +using UnityEngine; +using System; +using TiltBrush; + +public class VrStylusHandler : StylusHandler +{ + [SerializeField] private GameObject _mxInk_model; + [SerializeField] private GameObject _tip; + [SerializeField] private GameObject _cluster_front; + [SerializeField] private GameObject _cluster_middle; + [SerializeField] private GameObject _cluster_back; + + static public VrStylusHandler m_Instance; + + void Awake() + { + _stylus = new StylusInputs(); + m_Instance = this; + } + +#if OCULUS_SUPPORTED + private bool _inUiInteraction = false; + + public bool InUiInteraction + { + get { return _inUiInteraction; } + set { _inUiInteraction = value; } + } + + private bool _positionIsTracked; + private bool _positionIsValid; + + public bool positionIsTracked + { + get { return _positionIsTracked; } + } + public bool positionIsValid + { + get { return _positionIsValid; } + } + + public Color active_color = Color.green; + public Color double_tap_active_color = Color.cyan; + public Color default_color = Color.white; + + public override bool CanDraw() + { + return _positionIsTracked && _positionIsValid && !_inUiInteraction; + } + + // Defined action names. + private const string MX_Ink_Pose_Right = "aim_right"; + private const string MX_Ink_Pose_Left = "aim_left"; + private const string MX_Ink_TipForce = "tip"; + private const string MX_Ink_MiddleForce = "middle"; + private const string MX_Ink_ClusterFront = "front"; + private const string MX_Ink_ClusterBack = "back"; + private const string MX_Ink_ClusterBack_DoubleTap = "back_double_tap"; + private const string MX_Ink_ClusterFront_DoubleTap = "front_double_tap"; + private const string MX_Ink_Dock = "dock"; + private const string MX_Ink_Haptic_Pulse = "haptic_pulse"; + + private bool _tipHasVibrated = false; + private bool _middleHasVibrated = false; + private bool _doubleTapHasVibrated = false; + private float _hapticClickDuration = 0.01f; + private float _hapticClickAmplitude = 0.9f; + private float _hapticClickMinThreshold = 0.2f; + + private void UpdatePose() + { + _positionIsTracked = false; + _positionIsValid = false; + + // Retrieve the interaction profile names of the right and left controllers + var leftDevice = OVRPlugin.GetCurrentInteractionProfileName(OVRPlugin.Hand.HandLeft); + var rightDevice = OVRPlugin.GetCurrentInteractionProfileName(OVRPlugin.Hand.HandRight); + + // The Quest 3 touch controller interaction profile name is: /interaction_profiles/meta/touch_controller_plus + // The MX Ink interaction profile is: /interaction_profiles/logitech/mx_ink_stylus_logitech + + // Find whether the Logitech MX Ink is on the left or the right hand + bool stylusIsOnLeftHand = leftDevice.Contains("logitech"); + bool stylusIsOnRightHand = rightDevice.Contains("logitech"); + // Debug.Log($"Device: Left hand: {leftDevice}, Right hand: {rightDevice}"); + // Flag the stylus as active/inactive, on right/left hand + _stylus.isActive = stylusIsOnLeftHand || stylusIsOnRightHand; + _stylus.isOnRightHand = stylusIsOnRightHand; + // Hide the 3D model if not active + _mxInk_model.SetActive(_stylus.isActive); + // Hacky + InputManager.m_Instance.ShowController(!_stylus.isActive, stylusIsOnLeftHand ? 0 : 1); + InputManager.m_Instance.ShowController(true, stylusIsOnLeftHand ? 1 : 0); + + // Select the right/left hand stylus pose to be used + string MX_Ink_Pose = _stylus.isOnRightHand ? MX_Ink_Pose_Right : MX_Ink_Pose_Left; + + if (OVRPlugin.GetActionStatePose(MX_Ink_Pose, out OVRPlugin.Posef handPose)) + { + transform.localPosition = handPose.Position.FromFlippedZVector3f(); + transform.rotation = handPose.Orientation.FromFlippedZQuatf(); + _stylus.inkingPose.position = transform.localPosition; + _stylus.inkingPose.rotation = transform.rotation; + _positionIsTracked = true; + _positionIsValid = true; + } + else + { + Debug.LogError($"MX_Ink: Error getting Pose action name {MX_Ink_Pose}, check logcat for specifics."); + } + } + + void LateUpdate() + { + OVRInput.Update(); + UpdatePose(); + + if (!OVRPlugin.GetActionStateFloat(MX_Ink_TipForce, out _stylus.tip_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_TipForce}"); + } + + if (!OVRPlugin.GetActionStateFloat(MX_Ink_MiddleForce, out _stylus.cluster_middle_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_TipForce}"); + } + + if (!OVRPlugin.GetActionStateBoolean(MX_Ink_ClusterFront, out _stylus.cluster_front_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_ClusterFront}"); + } + + if (!OVRPlugin.GetActionStateBoolean(MX_Ink_ClusterBack, out _stylus.cluster_back_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_ClusterBack}"); + } + + if (!OVRPlugin.GetActionStateBoolean(MX_Ink_ClusterFront_DoubleTap, out _stylus.cluster_back_double_tap_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_ClusterFront_DoubleTap}"); + } + + if (!OVRPlugin.GetActionStateBoolean(MX_Ink_ClusterBack_DoubleTap, out _stylus.cluster_back_double_tap_value)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_ClusterBack_DoubleTap}"); + } + + if (!OVRPlugin.GetActionStateBoolean(MX_Ink_Dock, out _stylus.docked)) + { + Debug.LogError($"MX_Ink: Error getting action name: {MX_Ink_Dock}"); + } + + _stylus.any = _stylus.tip_value > 0 || _stylus.cluster_front_value || + _stylus.cluster_middle_value > 0 || _stylus.cluster_back_value || + _stylus.cluster_back_double_tap_value; + + _tip.GetComponent().material.color = _stylus.tip_value > 0 ? active_color : default_color; + _cluster_front.GetComponent().material.color = _stylus.cluster_front_value ? active_color : default_color; + _cluster_middle.GetComponent().material.color = _stylus.cluster_middle_value > 0 ? active_color : default_color; + if (_stylus.cluster_back_value) + { + _cluster_back.GetComponent().material.color = _stylus.cluster_back_value ? active_color : default_color; + } + else + { + _cluster_back.GetComponent().material.color = _stylus.cluster_back_double_tap_value ? double_tap_active_color : default_color; + } + + GenerateHapticClicks(); + } + + private void PlayHapticClick(float analogValue, ref bool hasVibrated, OVRPlugin.Hand hand) + { + if (analogValue >= _hapticClickMinThreshold) + { + if (!hasVibrated) + { + OVRPlugin.TriggerVibrationAction(MX_Ink_Haptic_Pulse, hand, + _hapticClickDuration, _hapticClickAmplitude); + hasVibrated = true; + } + } + if (analogValue < _hapticClickMinThreshold) + { + hasVibrated = false; + } + } + + private void PlayHapticClick(bool inputValue, ref bool hasVibrated, OVRPlugin.Hand hand) + { + if (inputValue) + { + if (!hasVibrated) + { + OVRPlugin.TriggerVibrationAction(MX_Ink_Haptic_Pulse, hand, + _hapticClickDuration, _hapticClickAmplitude); + hasVibrated = true; + } + } + else + { + hasVibrated = false; + } + } + + private void GenerateHapticClicks() + { + try + { + OVRPlugin.Hand holdingHand = _stylus.isOnRightHand ? OVRPlugin.Hand.HandRight : OVRPlugin.Hand.HandLeft; + PlayHapticClick(_stylus.tip_value, ref _tipHasVibrated, holdingHand); + PlayHapticClick(_stylus.cluster_middle_value, ref _middleHasVibrated, holdingHand); + PlayHapticClick(_stylus.cluster_back_double_tap_value, ref _doubleTapHasVibrated, holdingHand); + } + catch (Exception e) + { + Debug.LogError(e.Message); + } + } +#endif +} diff --git a/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs.meta b/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs.meta new file mode 100644 index 0000000000..ee70a8f786 --- /dev/null +++ b/Assets/ThirdParty/Logitech/Scripts/VrStylusHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1222192c234c4632aad833e6696c2d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab b/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab new file mode 100644 index 0000000000..ae45134360 --- /dev/null +++ b/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab @@ -0,0 +1,71 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2207123683136283994 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -5564216473371103434, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 35c401a1bc7464ba99b7753943dbce2e, type: 2} + - target: {fileID: 919132149155446097, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_Name + value: logitech_vr_stylus_v1.0 + objectReference: {fileID: 0} + - target: {fileID: 6790160926894396129, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 35c401a1bc7464ba99b7753943dbce2e, type: 2} + - target: {fileID: 8440019636835948524, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 35c401a1bc7464ba99b7753943dbce2e, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2fd5897dba61142d595b2d392a956e8e, type: 3} diff --git a/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab.meta b/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab.meta new file mode 100644 index 0000000000..3319402820 --- /dev/null +++ b/Assets/ThirdParty/Logitech/logitech_vr_stylus_v1.0.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 90df24c7a15784ca7a0a300d072cba39 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XR/Settings/Open XR Package Settings.asset b/Assets/XR/Settings/Open XR Package Settings.asset index b3d0d591ec..fd5ffba0d8 100644 --- a/Assets/XR/Settings/Open XR Package Settings.asset +++ b/Assets/XR/Settings/Open XR Package Settings.asset @@ -116,7 +116,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3d28f705476c80d47acb3dfade3d3142, type: 3} m_Name: MetaXRFoveationFeature Android m_EditorClassIdentifier: - m_enabled: 0 + m_enabled: 1 nameUi: Meta XR Foveation version: 1.0.0 featureIdInternal: com.meta.openxr.feature.foveation @@ -428,7 +428,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1927c045052a06d49a9b21fdcaa26db6, type: 3} m_Name: OculusXRFeature Standalone m_EditorClassIdentifier: - m_enabled: 0 + m_enabled: 1 nameUi: Meta XR Feature version: 0.0.1 featureIdInternal: com.meta.openxr.feature.metaxr @@ -444,12 +444,17 @@ MonoBehaviour: XR_FB_spatial_entity_sharing XR_FB_scene XR_FB_spatial_entity_container XR_FB_scene_capture XR_FB_face_tracking XR_FB_face_tracking2 XR_FB_eye_tracking XR_FB_eye_tracking_social XR_FB_body_tracking XR_META_body_tracking_full_body XR_META_body_tracking_calibration - XR_META_body_tracking_fidelity XR_FB_keyboard_tracking XR_FB_passthrough XR_FB_triangle_mesh - XR_FB_passthrough_keyboard_hands XR_OCULUS_audio_device_guid XR_FB_common_events - XR_FB_hand_tracking_capsules XR_FB_hand_tracking_mesh XR_FB_hand_tracking_aim + XR_META_body_tracking_fidelity XR_FB_keyboard_tracking XR_META_virtual_keyboard + XR_FB_passthrough XR_FB_triangle_mesh XR_FB_passthrough_keyboard_hands XR_META_passthrough_layer_resumed_event + XR_META_passthrough_color_lut XR_META_passthrough_preferences XR_OCULUS_audio_device_guid + XR_FB_common_events XR_FB_hand_tracking_capsules XR_FB_hand_tracking_mesh XR_FB_hand_tracking_aim XR_FB_touch_controller_pro XR_FB_touch_controller_proximity XR_FB_composition_layer_depth_test - XR_FB_haptic_amplitude_envelope XR_FB_haptic_pcm XR_META_spatial_entity_persistence - XR_META_spatial_entity_discovery XR_META_boundary_visibility XR_META_headset_id ' + XR_FB_haptic_amplitude_envelope XR_FB_haptic_pcm XR_META_local_dimming XR_META_hand_tracking_wide_motion_mode + XR_EXT_hand_tracking_data_source XR_EXT_hand_joints_motion_range XR_META_touch_controller_plus + XR_META_simultaneous_hands_and_controllers XR_MSFT_hand_interaction XR_FB_hand_tracking_confidence + XR_META_detached_controllers XR_META_spatial_entity_persistence XR_META_spatial_entity_discovery + XR_META_boundary_visibility XR_META_headset_id XR_FB_composition_layer_settings + XR_META_automatic_layer_filter ' company: Meta priority: 0 required: 0 @@ -642,7 +647,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1927c045052a06d49a9b21fdcaa26db6, type: 3} m_Name: OculusXRFeature Android m_EditorClassIdentifier: - m_enabled: 0 + m_enabled: 1 nameUi: Meta XR Feature version: 0.0.1 featureIdInternal: com.meta.openxr.feature.metaxr @@ -658,12 +663,17 @@ MonoBehaviour: XR_FB_spatial_entity_sharing XR_FB_scene XR_FB_spatial_entity_container XR_FB_scene_capture XR_FB_face_tracking XR_FB_face_tracking2 XR_FB_eye_tracking XR_FB_eye_tracking_social XR_FB_body_tracking XR_META_body_tracking_full_body XR_META_body_tracking_calibration - XR_META_body_tracking_fidelity XR_FB_keyboard_tracking XR_FB_passthrough XR_FB_triangle_mesh - XR_FB_passthrough_keyboard_hands XR_OCULUS_audio_device_guid XR_FB_common_events - XR_FB_hand_tracking_capsules XR_FB_hand_tracking_mesh XR_FB_hand_tracking_aim + XR_META_body_tracking_fidelity XR_FB_keyboard_tracking XR_META_virtual_keyboard + XR_FB_passthrough XR_FB_triangle_mesh XR_FB_passthrough_keyboard_hands XR_META_passthrough_layer_resumed_event + XR_META_passthrough_color_lut XR_META_passthrough_preferences XR_OCULUS_audio_device_guid + XR_FB_common_events XR_FB_hand_tracking_capsules XR_FB_hand_tracking_mesh XR_FB_hand_tracking_aim XR_FB_touch_controller_pro XR_FB_touch_controller_proximity XR_FB_composition_layer_depth_test - XR_FB_haptic_amplitude_envelope XR_FB_haptic_pcm XR_META_spatial_entity_persistence - XR_META_spatial_entity_discovery XR_META_boundary_visibility XR_META_headset_id ' + XR_FB_haptic_amplitude_envelope XR_FB_haptic_pcm XR_META_local_dimming XR_META_hand_tracking_wide_motion_mode + XR_EXT_hand_tracking_data_source XR_EXT_hand_joints_motion_range XR_META_touch_controller_plus + XR_META_simultaneous_hands_and_controllers XR_MSFT_hand_interaction XR_FB_hand_tracking_confidence + XR_META_detached_controllers XR_META_spatial_entity_persistence XR_META_spatial_entity_discovery + XR_META_boundary_visibility XR_META_headset_id XR_FB_composition_layer_settings + XR_META_automatic_layer_filter ' company: Meta priority: 0 required: 0 @@ -839,7 +849,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3d28f705476c80d47acb3dfade3d3142, type: 3} m_Name: MetaXRFoveationFeature Standalone m_EditorClassIdentifier: - m_enabled: 0 + m_enabled: 1 nameUi: Meta XR Foveation version: 1.0.0 featureIdInternal: com.meta.openxr.feature.foveation diff --git a/Assets/XR/Settings/OpenXR Editor Settings.asset b/Assets/XR/Settings/OpenXR Editor Settings.asset index 0e4babc9a7..9de4c9635a 100644 --- a/Assets/XR/Settings/OpenXR Editor Settings.asset +++ b/Assets/XR/Settings/OpenXR Editor Settings.asset @@ -14,5 +14,8 @@ MonoBehaviour: m_EditorClassIdentifier: Keys: 0100000007000000 Values: - - featureSets: [] - - featureSets: [] + - featureSets: + - com.meta.openxr.featureset.metaxr + - featureSets: + - com.meta.openxr.featureset.metaxr + m_vulkanAdditionalGraphicsQueue: 0 diff --git a/Assets/XR/XRGeneralSettings.asset b/Assets/XR/XRGeneralSettings.asset index ae01ae95ad..42542c8510 100644 --- a/Assets/XR/XRGeneralSettings.asset +++ b/Assets/XR/XRGeneralSettings.asset @@ -16,7 +16,7 @@ MonoBehaviour: m_AutomaticLoading: 0 m_AutomaticRunning: 0 m_Loaders: - - {fileID: 11400000, guid: 0aff50989b9ead845bdb50daaf977456, type: 2} + - {fileID: 11400000, guid: df02db4506fe02b4892b2f1dab25abe6, type: 2} --- !u!114 &-5428386068462531570 MonoBehaviour: m_ObjectHideFlags: 0 @@ -157,7 +157,7 @@ MonoBehaviour: m_AutomaticLoading: 0 m_AutomaticRunning: 0 m_Loaders: - - {fileID: 11400000, guid: 0aff50989b9ead845bdb50daaf977456, type: 2} + - {fileID: 11400000, guid: df02db4506fe02b4892b2f1dab25abe6, type: 2} --- !u!114 &8915350425150617969 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Packages/manifest.json b/Packages/manifest.json index e1fe7dd9c3..8221486a4a 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,7 +1,7 @@ { "dependencies": { "com.ixxy.unitysymmetry": "https://github.com/IxxyXR/unity-symmetry.git?nocache=7#upm", - "com.meta.xr.sdk.core": "https://github.com/icosa-mirror/com.meta.xr.sdk.core.git#66.0.0-openbrush", + "com.meta.xr.sdk.core": "https://github.com/icosa-mirror/com.meta.xr.sdk.core.git#68.0.2-openbrush-hotfix", "com.meta.xr.sdk.platform": "60.0.0", "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 8634fbb390..6e0674c794 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -14,11 +14,11 @@ "hash": "4f87195d54ccefe076678cb83a296b3f0428fc53" }, "com.meta.xr.sdk.core": { - "version": "https://github.com/icosa-mirror/com.meta.xr.sdk.core.git#66.0.0-openbrush", + "version": "https://github.com/icosa-mirror/com.meta.xr.sdk.core.git#68.0.2-openbrush-hotfix", "depth": 0, "source": "git", "dependencies": {}, - "hash": "25b32e5b6dacc484be3eed179ea3d2d21d55b9d1" + "hash": "cc9462850915e74dbb5cd6094f77464c5e606da1" }, "com.meta.xr.sdk.platform": { "version": "60.0.0", diff --git a/RuntimeActionBindings.json b/RuntimeActionBindings.json new file mode 100644 index 0000000000..448d19afe3 --- /dev/null +++ b/RuntimeActionBindings.json @@ -0,0 +1 @@ +{"InputActionDefinitions": [],"InputActionSets": [{"InteractionProfile":"/interaction_profiles/logitech/mx_ink_stylus_logitech","InputActionDefinitions":[{"ActionName":"middle","Type":2,"Paths":["/user/hand/left/input/cluster_middle_logitech/force","/user/hand/right/input/cluster_middle_logitech/force"]},{"ActionName":"tip","Type":2,"Paths":["/user/hand/left/input/tip_logitech/force","/user/hand/right/input/tip_logitech/force"]},{"ActionName":"front","Type":1,"Paths":["/user/hand/left/input/cluster_front_logitech/click","/user/hand/right/input/cluster_front_logitech/click"]},{"ActionName":"back","Type":1,"Paths":["/user/hand/left/input/cluster_back_logitech/click","/user/hand/right/input/cluster_back_logitech/click"]},{"ActionName":"grip","Type":4,"Paths":["/user/hand/left/input/grip/pose","/user/hand/right/input/grip/pose"]},{"ActionName":"aim_right","Type":4,"Paths":["/user/hand/right/input/aim/pose"]},{"ActionName":"docked","Type":1,"Paths":["/user/hand/left/input/dock_logitech/docked_logitech","/user/hand/right/input/dock_logitech/docked_logitech"]},{"ActionName":"back_double_tap","Type":1,"Paths":["/user/hand/left/input/cluster_back_logitech/double_tap_logitech","/user/hand/right/input/cluster_back_logitech/double_tap_logitech"]},{"ActionName":"front_double_tap","Type":1,"Paths":["/user/hand/left/input/cluster_front_logitech/double_tap_logitech","/user/hand/right/input/cluster_front_logitech/double_tap_logitech"]},{"ActionName":"aim_left","Type":4,"Paths":["/user/hand/left/input/aim/pose"]},{"ActionName":"haptic_pulse","Type":100,"Paths":["/user/hand/left/output/haptic","/user/hand/right/output/haptic"]},{"ActionName":"dock","Type":1,"Paths":["/user/hand/left/input/dock_logitech/docked_logitech","/user/hand/right/input/dock_logitech/docked_logitech"]}]}]} \ No newline at end of file From c8c3182d58d4414b98b915539b6b85bb9cd610ba Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Mon, 7 Oct 2024 17:58:32 +0100 Subject: [PATCH 05/17] Allow profiler to use bundled sketches (#769) * Util to read current git branch * Allow loading of bundled sketches with "tiltbrush://builtin/" prefix * Tweak location and content of profiling summary * Fix speling * Include build string in profile summary. Add a 40fps bucket --- .github/workflows/build.yml | 2 +- Assets/Scripts/App.cs | 25 ++++++++++++++++++++---- Assets/Scripts/Debug/ProfilingManager.cs | 16 +++++++++++++-- Assets/Scripts/SketchControlsScript.cs | 4 ++-- Assets/Scripts/UserConfig.cs | 4 ++-- Assets/Scripts/Util/GitUtils.cs | 24 +++++++++++++++++++++++ Assets/Scripts/Util/GitUtils.cs.meta | 3 +++ 7 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 Assets/Scripts/Util/GitUtils.cs create mode 100644 Assets/Scripts/Util/GitUtils.cs.meta diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b75e3da3d..431c04255a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -136,7 +136,7 @@ jobs: env: PRERELEASE: ${{ steps.version.outputs.prerelease }} run: | - # For a PR action (i.e., syncronize / open), the value of github.ref will be refs/pull/1234/merge + # For a PR action (i.e., synchronize / open), the value of github.ref will be refs/pull/1234/merge # For a push action, it will be either refs/heads/foo_branch_name OR refs/tags/v1234. # We want to use the base name for pushes of tags or to main, the PR number for PRs, and the branch name for named branches. if [[ "$PRERELEASE" == "false" || ${{ github.ref }} == refs/heads/main ]] diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index 26a949e986..c26e70c583 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -72,6 +72,7 @@ public partial class App : MonoBehaviour private const int kHttpListenerPort = 40074; private const string kProtocolHandlerPrefix = "tiltbrush://remix/"; + private const string kBuiltInSketchPrefix = "tiltbrush://builtin/"; private const string kFileMoveFilename = "WhereHaveMyFilesGone.txt"; private const string kFileMoveContents = @@ -472,7 +473,7 @@ void DestroyIntroSketch() Resources.UnloadUnusedAssets(); } - static string GetStartupString() + public static string GetStartupString() { string str = $"{App.kAppDisplayName} {Config.m_VersionNumber}"; @@ -638,11 +639,18 @@ void Start() foreach (string s in Config.m_SketchFiles) { - // Assume all relative paths are relative to the Sketches directory. string sketch = s; - if (!System.IO.Path.IsPathRooted(sketch)) + if (s.StartsWith(kBuiltInSketchPrefix)) { - sketch = System.IO.Path.Combine(App.UserSketchPath(), sketch); + sketch = s; + } + else + { + // Assume all relative paths are relative to the Sketches directory. + if (!System.IO.Path.IsPathRooted(sketch)) + { + sketch = System.IO.Path.Combine(App.UserSketchPath(), sketch); + } } m_RequestedTiltFileQueue.Enqueue(sketch); if (Config.m_SdkMode == SdkMode.Ods || Config.OfflineRender) @@ -1475,6 +1483,15 @@ private bool HandleExternalTiltOpenRequest() return HandlePolyRequest(path); } + if (path.StartsWith(kBuiltInSketchPrefix)) + { + path = path.Substring(kBuiltInSketchPrefix.Length); + path = Path.Join(FeaturedSketchesPath(), path); + SketchControlsScript.m_Instance.IssueGlobalCommand( + SketchControlsScript.GlobalCommands.LoadNamedFile, sParam: path); + return true; + } + // Copy to sketch folder in order to discourage the user from explicitly saving // to gallery for future access, which would (by design) strip attribution. // Crypto hash suffix is added to the filename for (deterministic) uniqueness. diff --git a/Assets/Scripts/Debug/ProfilingManager.cs b/Assets/Scripts/Debug/ProfilingManager.cs index 50610c762b..41f7e51a4f 100644 --- a/Assets/Scripts/Debug/ProfilingManager.cs +++ b/Assets/Scripts/Debug/ProfilingManager.cs @@ -59,7 +59,7 @@ private struct Sample private List m_FrameTimes; private const int k_NumFrames = 75 * 6; // enough space for six seconds of samples. private Coroutine m_UpdateCoroutine; - private int[] m_ValidFramerates = { 90, 75, 60, 1 }; + private int[] m_ValidFramerates = { 90, 75, 60, 40, 1 }; private List m_Samples = new List(); public static ProfilingManager Instance @@ -156,7 +156,7 @@ private string GetProfilingFilename() string dateTime = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"); filename = string.Format("Profile_{0}.data", dateTime); } - return Path.Combine(Application.persistentDataPath, filename); + return filename; } // Grabs the frame times and any functions being profiled. @@ -212,6 +212,13 @@ private void OutputStats() ? SaveLoadScript.m_Instance.GetLastFileHumanName() : App.UserConfig.Profiling.ProfileName; message.AppendLine("TBProfile: START"); +#if UNITY_EDITOR + string branch = GitUtils.GetGitBranchName(); + message.AppendLine($"Git branch: {branch}"); +#endif + message.AppendLine($"Build: {App.GetStartupString()}"); + message.AppendLine($"Profile name: {profileName} Filename: {fileName} Human name: {humanName}"); + if (App.UserConfig.Profiling.PerfgateOutput) { PerfgateOutput(message, m_FrameTimes.ToArray(), numBatches, numTriangles, file); @@ -230,6 +237,11 @@ private void OutputStats() message.AppendLine("TBProfile: END"); Debug.Log(message.ToString()); + + string path = Path.Join( + App.UserPath(), + $"{GetProfilingFilename()}_summary.txt"); + File.WriteAllText(path, message.ToString()); } private void HumanReadableOutput(StringBuilder output, Statistics.Summary stats, int numBatches, diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 294099a135..4577277bec 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -5105,7 +5105,7 @@ private void ToggleProfiling() } else { - ProfilingManager.Instance.StartProfiling(App.UserConfig.Profiling.ProflingMode); + ProfilingManager.Instance.StartProfiling(App.UserConfig.Profiling.ProfilingMode); } } @@ -5142,7 +5142,7 @@ private IEnumerator DoProfiling(bool andQuit = false) InputManager.Wand.Geometry.transform.rotation = Camera.main.transform.rotation; m_PanelManager.LockPanelsToController(); - ProfilingManager.Instance.StartProfiling(App.UserConfig.Profiling.ProflingMode); + ProfilingManager.Instance.StartProfiling(App.UserConfig.Profiling.ProfilingMode); yield return new WaitForSeconds(App.UserConfig.Profiling.Duration); ProfilingManager.Instance.StopProfiling(); diff --git a/Assets/Scripts/UserConfig.cs b/Assets/Scripts/UserConfig.cs index b789dbe44a..313c82fdc6 100644 --- a/Assets/Scripts/UserConfig.cs +++ b/Assets/Scripts/UserConfig.cs @@ -601,7 +601,7 @@ public struct ProfilingConfig { public const int kDefaultScreenshotResolution = 1000; public string[] ProfilingFunctions { get; private set; } - public ProfilingManager.Mode ProflingMode { get; private set; } + public ProfilingManager.Mode ProfilingMode { get; private set; } public string Mode { @@ -609,7 +609,7 @@ public string Mode { try { - ProflingMode = (ProfilingManager.Mode)Enum.Parse(typeof(ProfilingManager.Mode), value); + ProfilingMode = (ProfilingManager.Mode)Enum.Parse(typeof(ProfilingManager.Mode), value); } catch (ArgumentException) { diff --git a/Assets/Scripts/Util/GitUtils.cs b/Assets/Scripts/Util/GitUtils.cs new file mode 100644 index 0000000000..db805e3233 --- /dev/null +++ b/Assets/Scripts/Util/GitUtils.cs @@ -0,0 +1,24 @@ +using System.Diagnostics; + +namespace TiltBrush +{ + public static class GitUtils + { + public static string GetGitBranchName() + { + ProcessStartInfo startInfo = new ProcessStartInfo("git", "rev-parse --abbrev-ref HEAD") + { + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + using (Process process = Process.Start(startInfo)) + { + process.WaitForExit(); + string output = process.StandardOutput.ReadToEnd().Trim(); + return output; + } + } + } +} diff --git a/Assets/Scripts/Util/GitUtils.cs.meta b/Assets/Scripts/Util/GitUtils.cs.meta new file mode 100644 index 0000000000..2b497dc986 --- /dev/null +++ b/Assets/Scripts/Util/GitUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b85862c054f14289a78ca374f6613854 +timeCreated: 1727268299 \ No newline at end of file From c0b8f915b8b323b9fbd6773039f02ac24fe353ba Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Fri, 25 Oct 2024 08:51:59 +0300 Subject: [PATCH 06/17] Combine all dependabot PRs into one (#780) --- .github/dependabot.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index cf2c44f0b6..6dd25a79a2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,3 +9,7 @@ updates: - "mikeage" assignees: - "mikeage" + groups: + all-actions-updates: + patterns: + - "**" From 44e8b67a36440643481a24d71f12d6bc60f247f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:09:58 +0300 Subject: [PATCH 07/17] Bump the all-actions-updates group with 2 updates (#781) Bumps the all-actions-updates group with 2 updates: [actions/setup-python](https://github.com/actions/setup-python) and [actions/setup-dotnet](https://github.com/actions/setup-dotnet). Updates `actions/setup-python` from 5.2.0 to 5.3.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5.2.0...v5.3.0) Updates `actions/setup-dotnet` from 4.0.1 to 4.1.0 - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](https://github.com/actions/setup-dotnet/compare/v4.0.1...v4.1.0) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-actions-updates - dependency-name: actions/setup-dotnet dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-actions-updates ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pre-commit.yml | 4 ++-- .github/workflows/third_party_notices.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 72f0c4f5b1..e527be76a2 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -13,10 +13,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5.2.0 + - uses: actions/setup-python@v5.3.0 with: python-version: '3.12' - - uses: actions/setup-dotnet@v4.0.1 + - uses: actions/setup-dotnet@v4.1.0 with: dotnet-version: '8.0.x' - name: Install pre-commit diff --git a/.github/workflows/third_party_notices.yml b/.github/workflows/third_party_notices.yml index a5958d92db..c5814b4c96 100644 --- a/.github/workflows/third_party_notices.yml +++ b/.github/workflows/third_party_notices.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5.2.0 + - uses: actions/setup-python@v5.3.0 with: python-version: '3.12' - name: Run the generator From 1b7d63b2f219b7ad1d91f4728831cda0a43a9e53 Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:45:00 +0300 Subject: [PATCH 08/17] Use PAT to create releases and tags (#782) --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 431c04255a..9df621fda3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -801,14 +801,13 @@ jobs: - name: Publish uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: body: ${{ steps.changelog.outputs.changelog }} prerelease: ${{ needs.configuration.outputs.prerelease }} target_commitish: ${{ needs.configuration.outputs.currentrelease }} tag_name: ${{ needs.configuration.outputs.version }} files: releases/* + token: ${{ secrets.RELEASE_TOKEN }} publish_gitbook: name: Publish changelog from last major build to open-brush-docs From d44924089579af04b86f902d4648f3dde8acced8 Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Sun, 27 Oct 2024 07:42:18 +0200 Subject: [PATCH 09/17] Force photon to the previous, working, version (#783) --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9df621fda3..3234056239 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -352,6 +352,7 @@ jobs: with: token: ${{ env.PHOTON_PAT }} repository: icosa-mirror/photon-fusion + ref: v1.1.8 path: photon-fusion-mirror/ - name: Copy photon files From e2b03977cd9ffa92849f66a1c1658fe5ba1d6736 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 10:45:18 +0200 Subject: [PATCH 10/17] Bump rexml from 3.3.6 to 3.3.9 in the bundler group across 1 directory (#784) Bumps the bundler group with 1 update in the / directory: [rexml](https://github.com/ruby/rexml). Updates `rexml` from 3.3.6 to 3.3.9 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect dependency-group: bundler ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index dcc162e489..750d71d3ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -184,8 +184,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.6) - strscan + rexml (3.3.9) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -199,7 +198,6 @@ GEM CFPropertyList naturally sshkey (3.0.0) - strscan (3.1.0) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 26fea935765dddb4ab0f58c823763d40afdbe707 Mon Sep 17 00:00:00 2001 From: Mike Nisbet Date: Thu, 5 Dec 2024 15:37:42 +0000 Subject: [PATCH 11/17] Settings tidyup (#788) Fix a few settings that shouldn't have been changed or change when project is loaded --- Assets/Oculus/OculusProjectConfig.asset | 4 ++-- Assets/XR/Settings/Open XR Package Settings.asset | 4 ++-- Assets/XR/Settings/OpenXR Editor Settings.asset | 6 ++---- Assets/XR/XRGeneralSettings.asset | 4 ++-- ProjectSettings/ProjectSettings.asset | 2 +- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/Assets/Oculus/OculusProjectConfig.asset b/Assets/Oculus/OculusProjectConfig.asset index 6444d5efbd..20354b8411 100644 --- a/Assets/Oculus/OculusProjectConfig.asset +++ b/Assets/Oculus/OculusProjectConfig.asset @@ -41,5 +41,5 @@ MonoBehaviour: systemSplashScreen: {fileID: 0} systemSplashScreenType: 0 _systemLoadingScreenBackground: 0 - ovrPluginMd5Win64: d72fb658f3d9064293fb2241e5525905551003f900539e0b4fc00777d76dbee1 - ovrPluginMd5Android: 5ef6da3aad630673da6447f50e1b2d8aba8131f9f19a0720cb301a8c9f89d2b5 + ovrPluginMd5Win64: d72fb658f3d9064293fb2241e55259057f9ac34a260fafcf32f36c4a3005911c + ovrPluginMd5Android: 5ef6da3aad630673da6447f50e1b2d8ae14dbda69fd9877bc13b87ed87f3752b diff --git a/Assets/XR/Settings/Open XR Package Settings.asset b/Assets/XR/Settings/Open XR Package Settings.asset index fd5ffba0d8..241e7c1e1e 100644 --- a/Assets/XR/Settings/Open XR Package Settings.asset +++ b/Assets/XR/Settings/Open XR Package Settings.asset @@ -428,7 +428,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1927c045052a06d49a9b21fdcaa26db6, type: 3} m_Name: OculusXRFeature Standalone m_EditorClassIdentifier: - m_enabled: 1 + m_enabled: 0 nameUi: Meta XR Feature version: 0.0.1 featureIdInternal: com.meta.openxr.feature.metaxr @@ -647,7 +647,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1927c045052a06d49a9b21fdcaa26db6, type: 3} m_Name: OculusXRFeature Android m_EditorClassIdentifier: - m_enabled: 1 + m_enabled: 0 nameUi: Meta XR Feature version: 0.0.1 featureIdInternal: com.meta.openxr.feature.metaxr diff --git a/Assets/XR/Settings/OpenXR Editor Settings.asset b/Assets/XR/Settings/OpenXR Editor Settings.asset index 9de4c9635a..eb45bb42b6 100644 --- a/Assets/XR/Settings/OpenXR Editor Settings.asset +++ b/Assets/XR/Settings/OpenXR Editor Settings.asset @@ -14,8 +14,6 @@ MonoBehaviour: m_EditorClassIdentifier: Keys: 0100000007000000 Values: - - featureSets: - - com.meta.openxr.featureset.metaxr - - featureSets: - - com.meta.openxr.featureset.metaxr + - featureSets: [] + - featureSets: [] m_vulkanAdditionalGraphicsQueue: 0 diff --git a/Assets/XR/XRGeneralSettings.asset b/Assets/XR/XRGeneralSettings.asset index 42542c8510..ae01ae95ad 100644 --- a/Assets/XR/XRGeneralSettings.asset +++ b/Assets/XR/XRGeneralSettings.asset @@ -16,7 +16,7 @@ MonoBehaviour: m_AutomaticLoading: 0 m_AutomaticRunning: 0 m_Loaders: - - {fileID: 11400000, guid: df02db4506fe02b4892b2f1dab25abe6, type: 2} + - {fileID: 11400000, guid: 0aff50989b9ead845bdb50daaf977456, type: 2} --- !u!114 &-5428386068462531570 MonoBehaviour: m_ObjectHideFlags: 0 @@ -157,7 +157,7 @@ MonoBehaviour: m_AutomaticLoading: 0 m_AutomaticRunning: 0 m_Loaders: - - {fileID: 11400000, guid: df02db4506fe02b4892b2f1dab25abe6, type: 2} + - {fileID: 11400000, guid: 0aff50989b9ead845bdb50daaf977456, type: 2} --- !u!114 &8915350425150617969 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 5f01f77f81..a73dfef0ed 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -265,7 +265,7 @@ PlayerSettings: clonedFromGUID: 00000000000000000000000000000000 templatePackageId: templateDefaultScene: - useCustomMainManifest: 0 + useCustomMainManifest: 1 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 From b9cd0116d57e291422b6e7a48cd6f8d0d291ad8f Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Wed, 11 Dec 2024 09:09:04 +0200 Subject: [PATCH 12/17] Do not use # in PR build names (#796) * Remove # from the productName, if set (affects save path) * Remove # from the 'description' --- .github/workflows/build.yml | 2 +- Assets/Editor/BuildTiltBrush.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3234056239..d588c0dd13 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -146,7 +146,7 @@ jobs: else if [[ ${{ github.ref }} == refs/pull/* ]] then - DESCRIPTION="PR#$(echo ${{ github.ref }} | sed -e 's#refs/pull/##' -e 's#/merge##')" + DESCRIPTION="PR$(echo ${{ github.ref }} | sed -e 's#refs/pull/##' -e 's#/merge##')" elif [[ ${{ github.ref }} == refs/heads/* ]] then DESCRIPTION="$(echo ${{ github.ref }} | sed -e 's#refs/heads/##')" diff --git a/Assets/Editor/BuildTiltBrush.cs b/Assets/Editor/BuildTiltBrush.cs index 259ba578b2..a8af77a93d 100644 --- a/Assets/Editor/BuildTiltBrush.cs +++ b/Assets/Editor/BuildTiltBrush.cs @@ -1032,7 +1032,7 @@ public TempSetAppNames(BuildTarget target, string Description) #endif if (!String.IsNullOrEmpty(Description)) { - new_name += "-(" + Description + ")"; + new_name += "-(" + Description.Replace("#", "") + ")"; new_identifier += "-" + Description.Replace("_", "").Replace("#", "").Replace("-", ""); } if (m_IsAndroidOrIos) From a690bbb8480cbfb447e6f7470e654e5f84ed95f7 Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Mon, 16 Dec 2024 06:02:10 +0200 Subject: [PATCH 13/17] Improve Windows development experience (#797) * Force Windows to use LF line endings for .cs and .py files Force Windows to use LF line endings for .cs and .py files * Tell yamlfmt to always use LF --------- Co-authored-by: Riccardo Bovo --- .editorconfig | 1 + .yamlfmt | 1 + 2 files changed, 2 insertions(+) diff --git a/.editorconfig b/.editorconfig index e497deceac..69d4fd0505 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,7 @@ indent_size = 2 [*.{cs,py}] indent_style = space indent_size = 4 +end_of_line = lf # Microsoft .NET properties csharp_new_line_before_members_in_object_initializers = false diff --git a/.yamlfmt b/.yamlfmt index fd7281cdd4..dad45d7e1f 100644 --- a/.yamlfmt +++ b/.yamlfmt @@ -1,4 +1,5 @@ --- +line_ending: lf formatter: include_document_start: true indent: 2 From 36360c68e4548f8ab91e263553e0dadf3ecf488b Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:59:28 +0200 Subject: [PATCH 14/17] Support new ubuntu-24 images (#799) Support cases where the VM image contains no docker images --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d588c0dd13..f80d0f6e86 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -268,7 +268,7 @@ jobs: echo "Initial free space" df -h / echo "Removing all pre-loaded docker images" - docker rmi $(docker image ls -aq) # Removes ~3GB + docker image ls -aq | xargs -r docker rmi # Removes ~3GB df -h / echo "Listing 100 largest packages" dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | head -n 100 From 22a22a279741565ebf7beafe2d97c81df0e814be Mon Sep 17 00:00:00 2001 From: Mike Miller <87874+mikeage@users.noreply.github.com> Date: Fri, 20 Dec 2024 14:21:29 +0200 Subject: [PATCH 15/17] Fix chown error in newer Alpine images [affects new builds without caches] (#804) Fix chown error in newer Alpine images --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f80d0f6e86..c37c2bb38a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -533,7 +533,7 @@ jobs: du -mcsh Library/* find Library -size +50M -exec ls -altrh {} \; # chown all files, since some are owned by root after the docker run - docker run -v $(pwd)/Library:/mnt alpine chown $(id -u).$(id -g) -R /mnt/ + docker run -v $(pwd)/Library:/mnt alpine chown $(id -u):$(id -g) -R /mnt/ # Print the files to be deleted find Library/Bee/ -name 'symbols.zip' -or -name 'libil2cpp*.so' -or -name 'launcher-release.apk' | tee todelete.txt cat todelete.txt | xargs -r rm From d5384b0c891cb54830742be00d4720f40b81cd59 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Sat, 21 Dec 2024 10:36:11 +0000 Subject: [PATCH 16/17] Multiplayer Beta (#774) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * WIP UI # Conflicts: # Assets/Prefabs/Panels/AdminPanel.prefab # Assets/Settings/Localization/Strings/Strings Shared Data.asset # Assets/Settings/Localization/Strings/Strings_en.asset * Fix panel spawn * Add MP panel to list will probably conflict # Conflicts: # Assets/Scenes/Main.unity * Oculus connection logic for testing * Join logic # Conflicts: # Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs # Assets/Scripts/Multiplayer/MultiplayerManager.cs * WIP panel * Setup new button type, fix close button * Change instantiation point of photon runner # Conflicts: # Assets/Scripts/PassthroughManager.cs * beta tag prefab * Add alpha tag to multiplayer * Remove duplicate "using" block [CI BUILD] * Trigger CI workflow * Minimal UI Implementation for multiplayer room -Implemented global command: MultiplayerJoinRoom. -Updated the multiplayer panel prefab and manager. -Changed the admin panel layout from hexagon to octagon. TODO: -Add room name editing capabilities. * Numeric keyboard popup for multiplayer room * Buttons were too close to panel * Don't init XR manager on start * OpenXR should be the default in the editor * Admin panel label tweaks * Initialize keyboard with room name and refactor room name handling - Added initialization of the keyboard with the current room name in `MultiplayerPanelButton.cs`. - Changed `SetRoomName` to a property (`RoomName`) in `MultiplayerPanel.cs` for better readability and encapsulation. - Updated `SketchControlScript.cs` to use the new `RoomName` property. * Does Room exist -MultiplayerManager: Added DoesRoomNameExist() and updated m_RoomData for room validation. -MultiplayerPanel: Added UpdateRoomExistenceMessage() to indicate if a room exists or will be created (added a text to the prefab) * Update MultiplayerManager.cs remove 'GraphView' * Remove graphview reference * dotnet format * Add Disconnection Handling for Multiplayer Mode Update This change set introduces event-driven handling for multiplayer disconnections and ensures that the MultiplayerPanel properly updates its UI when a disconnection occurs. * Add Leave Room button Add Leave Room button Add Leave Room Global Command * Update PhotonPlayerRig.prefab * Update MultiplayerPanel.prefab * Editor UI to test connection to the room * Reducing payload per Stroke Chunk - Reducing payload per Stroke Chunk from 128 control points to 10 control points - Adding a single point where the payload can be edited called NetworkingConstants this is then used both in PhotonStructs.cs and PhotonManager.cs * update Build GitHub Actions workflow (build.yml) to use the new photon tag. * Update PopUpWindow_NumericKeyboard.prefab aligning the collider * Include Photon Fusion project-specific assets in version control * Include NetworkPrefabAssetCollection.asset in version control * Update PhotonPlayerRig.prefab * removing the NetworkPrefbAssetCollection * Track PhotonAppSettings * Rebake PhotonPlayerRig Rebake attempt * Update SketchControlsScript.cs 1- Adding blank commands to avoid Unrecognized command Error * Update MultiplayerPanel.cs Multiplayer Panel 1 - Handle the Case When MultiplayerManager.m_Instance is null 2 - Avoid Accessing MultiplayerManager.m_Instance in Field Initializers * Handle the removal of the player rig when leaving the room handle the removal of the player rig to ensure proper Clean-up * Update PhotonManager.cs removing UnityEditor.Localization.Platform.Android * Update SketchControlsScript.cs pass pre-commit * Create NetworkPrefabAssetCollection.asset Adding this to solve the * Update build.yml predefine FUSION_WEAVER if env.PHOTON_PAT * Fix reconnection issue by re-initializing NetworkRunner after shutdown - Modified Disconnect() to set m_Runner to null after calling Shutdown() and destroy its GameObject to ensure proper cleanup. - Updated Connect() to check if m_Runner is null and re-initialize it if necessary before starting a new game. - Extracted runner initialization logic into a new method InitializeRunner() to avoid code duplication and ensure consistent setup. This resolves the error encountered when attempting to reconnect after disconnecting, as m_Runner now correctly handles its lifecycle by being re-instantiated after shutdown. * Lock panels to beginner mode when a user enters a multiplayer room To block the ability to join a multiplayer session when in advance mode: I've changed the availability of the Globalcommand.MultiplayerJoinRoom to only be available when the user is beginner mode. As part of this I also changed the MultiplayerPanel.Prefab button (join room) to AllowUnavailable to True. This change is also supported by a check that happens every time the multiplayer panel is open and a UI alert message explaining to switch to beginner mode. To block the ability to switch to advance mode during a multiplayer session: I've changed the availability of the Globalcommand.AdvancedPanelsToggle in the IsCommandAvailable() essentially I check if the user is in a multiplayer room and if it is the advancePanelsToggle becomes unvalaible. As part of this I also changed the Admin panel prefab buttons (advance beginner mode) to AllowUnavailable to True. * Update MultiplayerPanel.cs initialize the multiplayer panel in lobby mode * RPC Implementation of the Switch Environment Command Implemented RPC_SwitchEnvironment using environment Guid. * fix pre-commit yml * fixing RPC Implementation of the Switch Environment Command * Add Photon Voice Secrets * Update AndroidManifest.xml Adding microphone permissions * Photon Voice Integration * Update tag icosa-mirror/photon-fusion on build.yml [skip ci] Update tag icosa-mirror/photon-fusion * Trigger CI build * Update list of symbols Update list of symbols * Update MultiplayerManager.cs Check if PhotonVoiceManager get loaded * Trigger CI Build * [CI BUILD] Trigger CI Build * Tiding Up Interface Connection Handler * New Icons * Updates To The Multiplayer UI * Adding Disconnect Logic Adding Disconnect Logic and Fixing Leave Room Logic * Fixing logging messages Fixing logging messages * Add Alerts/Errors to multiplayer UI * dos2unix * Changes to MultiplayerManager Fixing incorrect conditions for executing networked commands. * more dos2unix * Force Windows to use LF line endings for .cs and .py files Force Windows to use LF line endings for .cs and .py files * Update BaseCommand.cs Adding timestamps when photon is present * Fix the mirror for multiplayer Fix the mirror widget for multiplayer The first problem is related to the fact that the current implementation of the multiplayer does not properly transmit and serialize the chain of commands especially the property of the basecommand m_Children and m_Parent. The second problem this commit address is the fact that In mirror mode, the brush stroke command is invoked twice. Initially, a single brush stroke command is sent. The second invocation sends a command chain, including the initial brush stroke as a parent and a second mirrored stroke as its child. Sending both instances through PhotonRPC causes issues, as the first brush stroke command is received twice, leading to duplication and processing errors on the receiving peer. To resolve this we use PerformAndRecordCommand in place of RecordCommand, and we change the PointerManager.FinalizeLine(), PointerScript.DetachLine(), SketchMemoryScript.MemorizeBatchedBrushStroke() to utilize a parameter * Fix Check if Room Exist Fix on MultiplayerManager.cs and extend the range of checks on MultiplayerPannel.cs * Room Owner Update Photon Manager with a GetPlayerCount() method used to establish if a user is a room owner Update Multiplayer Manager with a isUserRoomOwner * Implement basic history synchronization Upon a remote player joining, the room owner now transmits all commands in the operation stack, ensuring the new player receives the complete command history for a consistent session state. * Clear scene for non-room owner players on join Clear scene for non-room owner players on join: If a player joins and is not the room owner, their scene is reset to ensure consistency with the room owner's state upon receiving the synchronized history. * Improving Remote Player Registration Remote players were not correctly registered when already present in the room because `INetworkRunnerCallbacks.OnPlayerJoined` in Fusion 1 is not called for users who are already in the room. To address this, we added and registered existing users using the `CheckExistingUsers()` method. Additionally, in `MultiplayerManager.cs`, the local player ID was not registered correctly, which has now been fixed. A display for both the local and remote user IDs was added to `MultiplayerManagerEditor.cs` to facilitate debugging. * Fix Remote User List Clearing Fixed issue where remote user list was not cleared on disconnect or room exit. * Update MultiplayerManagerEditor.cs Enhanced MultiplayerManager Editor to streamline debugging with clearer information display and controls. * Introduce coroutine for sending command history via Photon network This update refactors `SendCommandHistory` to use a coroutine, sending commands in batches with a delay between each batch. This approach reduces the likelihood of Photon RPC message delivery failures that occur when too many messages are sent within the same frame. The coroutine yields between batches and includes a configurable delay to ensure smooth, reliable transmission over the network. * GUIDs check and consistency between peers Add support for initializing commands with existing GUIDs Check memory script stack for guid commands before performing the command * Networking isRoomOwner To correctly define who is the room owner beyond the two users case we need to share this property, we do this by extending the PhotonPlayerRig NetworkBehaviour component * Room Ownership logic updated * Room Ownership logic updated * Room Ownership logic updated Taking care of few edge cases and cleaning logs * Headset scale added to player rig * Controllers Added to the player rig * Set Undo and Redo unavailable while connected * Updating Connect and Disconnect Logic in the UI Removing the Connect and Disconnect buttons and extending the MultiplayerPanel.cs to connect when enabled. If the user is not in the room, it will disconnect when disabled. * Display Room Ownership on the UI Added a RoomOwnershipUpdated action to MultiplayerManager.cs to send updates about room ownership to the multiplayer UI panel. Updated the MultiplayerPanel script and prefab to include a Room Ownership field. * Fix display of room Ownership * Fix null reference issues in PhotonPlayerRig Fix null reference issues in PhotonPlayerRig by adding checks for destroyed objects in RecieveData and other methods. * Fix invalid localScale assignment due to extreme SceneScale values Clamped SceneScale to prevent division by zero or extremely small values. * Updating UI command descriptions for Multiplayer UI Updating the languages translations for the Multiplayer UI * Resolve Controller Flickering Updated the PhotonPlayerRig prefab to properly manage dummy transforms and model transforms for left/right controllers. * Update MultiplayerManager.cs removing redundant commented code * Prevent Access to Networked Properties After PhotonPlayerRig Despawns - Introduced m_IsSpawned flag in PhotonPlayerRig to track spawn state. - Updated ReceiveData() to check m_IsSpawned before accessing IsRoomOwner, avoiding InvalidOperationException. - Set m_IsSpawned to false in OnDestroy() to handle object despawning. - Added warning logs for attempts to access networked properties post-despawn, aiding in debugging. * RecieveData to ReceiveData * Disable Undo/Redo in Multiplayer specifically Controller buttons Extended CanRedo() and CanUndo() methods in SketchControlScript to include a condition checking if the connection state is IN_ROOM, preventing undo/redo functionality when in multiplayer mode. * Disable loading sketches when in multiplayer mode * hiding extra button on prefab * [CI BUILD] * Removing m_GuidCache Removing unused m_GuidCache * Separation of Command Stacks Divided local (m_OperationStack) and network (m_NetworkStack) command stacks to handle independent undo/redo flows for local and networked operations. Added IsCommandInNetworkStack to check for repeated commands in the network stack, ensuring no duplicate processing. Facilitates clearer distinction between local and global operations in multiplayer scenarios. * Update to SendCommandHistory() to include the network command stack * Introduce networked timestamps for commands This ensures that command histories across different stacks can be transmitted and synchronized in order between peers. * Clear NetworkStack in ClearMemory() to prevent command reception issues after multiplayer sessions When calling ClearMemory(), the NetworkStack must be cleared alongside other stacks. Without this, IsCommandInStack may find existing GUIDs in NetworkStack, causing new commands to be ignored after entering and exiting multiplayer rooms. Clearing NetworkStack ensures that old command GUIDs don't interfere with new commands, allowing them to be received and processed correctly. * Update BaseCommand.cs wrongly referencing Fusion * Updating to Room Owner Logic * Implementing Reference StrokeData to BrushStrokeCommands Implementing WeakReference between Strokes and BrushStrokeComma. This allows the garbage collector to collect the BrushStrokeCommand if it's no longer in use elsewhere. * Identify Command-less Strokes We have implemented the GetStrokesWithoutCommand() method in SketchMemoryScript.cs. This enhancement enables us to distinguish between strokes in the memory list that were loaded from deserialization (i.e., from a file) and those that were interactively generated during the current session. By identifying strokes without referenced brush stroke command, we can better understand the origin of each stroke and manage them accordingly. * Implementing command-less Strokes Synchronization The newly implemented GetStrokesWithoutCommand() function in SketchMemoryScript.cs significantly improves stroke synchronization. This function not only retrieves all commands from the various stacks but also identifies strokes that lack associated commands—specifically, those that have been deserialized or loaded from files. By distinguishing these command-less strokes, we can effectively share them with peers, avoiding redundances. * Implement Estimation of Command-to-Network-Message Conversion Some commands must be split into multiple network messages due to payload size limitations per message. In this changeset, we implemented a function to estimate the number of network messages required to transmit each command. This enhancement improves the efficiency of the coroutine responsible for synchronizing the scene with new users. * Reducing log level for pun fusion and voice * Limiting sequential execution of the SendStrokesAndCommandHistory coroutine to one queued instance Overlapping coroutines could result in network packet loss and cause users to receive an incomplete scene. This commit prevents overlapping execution of SendStrokesAndCommandHistory by allowing only one active coroutine and one queued instance. This ensures that users joining during an ongoing or queued execution receive a complete history of commands. * Test reliable for brush commands * Disable edit room and nickname buttons when in room Disable edit room and nickname buttons when in room * Add a button to erase all text Add a button to the keyboard pop up to erase all text * Implementing Sync Information for Users Joining Multiplayers Room Added synchronization info display when a user(non owners) joins the room. Updates synchronization percentage dynamically. Clears sync info upon completion. * Implement Environment Synchronization for Sketch-Loaded Environments SendStrokesAndCommandHistory lack environment updates loaded from files. This change ensures environments loaded from sketches are synchronized, improving scene consistency. * Move History Synchronization Logic to his own class * Update HistorySynchronizationManager.cs Add a list of users being update to manage the display updates for each * Update PhotonRPC.cs Add an optional target player to RPC methods to enable one-to-one history synchronization rather than one-to-many * Implement Acknowledgment-Based History Synchronization to Ensure Reliability [skip ci] Data packets continue to be lost during history synchronization, even with reliable transmission and controlled packet rates. To address this, we are transitioning to a system where every synchronization command is explicitly acknowledged by the receiving user, ensuring robust and reliable synchronization. * Switching to Photon Fusion 2 [skip ci] * Implementing Large Data Streaming [skip ci] Leveraging Fusion 2 to transmit the latest autosaved data. * Update build.yml update with new symbol FUSION2 and new tag Fusion_v2_Voice_2 for icosa-mirror/photon-fusion * Update UnityGLTFSettings.asset * Fix formatting in Multiplayer defines * Update PhotonManager.cs CheckExistingUsers() is no longer needed because OnPlayerJoined behaves differently in Fusion 2 compared to Fusion 1. Additionally, PlayerRef can no longer be generated directly from the playerId. Instead, a method (PlayerRef .FromEncoded()) must be used to generate them, therefore we no longer store the PlayerRef.playerId instead we store the PlayerRef .RawEncoded value. * Multiplayer Stroke Serialization new class which provides a methods to Serializes a LinkedList of Strokes into a byte array and deserialize them in order to use the m_Runner.SendReliableData * Multiplayer Scene Sync Renaming History Synchronization manager to Multiplayer Scene Sync Migrating the code for sending large bytes from the multiplayer manager to the Multiplayer Scene Sync implementing the choice to sync the scene with commands (old method) or by sharing strokes (new reliable method) * Implement display of progress for stroke synchronization 1 - implement strokes guid 2 - Implement display of progress for stroke synchronization * Change Label on menu alpha->beta Commented some debug messages * Implement failsafe logic for GenerateUniqueRoomName We limit the attempts to 10 * Hide nickname * Update MultiplayerPanel.cs Updating phrases "Switch to beginner mode to Join Room" -> "Switch to Beginner Mode to use Multiplayer" "You are Room Owner" -> "You are the Room Owner" "You are Not Room Owner" -> "You are not the Room Owner" "$"The room {data.roomName} already exist your joining an existing session." -> "$"Room {data.roomName} already exists. You will be joining an existing session." "/n" -> "\n" * What's New Button On Admin Panel Updating the localization strings for the what's new button on admin panel * Implement avatar speaking feedback Detect if the user is transmitting through the voice channel and display speaking feedback on the remote avatar by changing the HMD color. * Implementing nickname display on remote avatars * changing TAB to beta * Simplify connection state ConnectionState.IN_ROOM -> "In Room" * Implement PhotonRPCBatcher to Reduce Network Congestion and Ensure Reliable Command Delivery Problem: Occasionally, commands fail to be delivered or executed, leading to inconsistencies in the scene. The issue stems from commands being sent but not received, likely due to network congestion suppressing them. Solution: To reduce congestion, we limit the number of RPCs sent per frame by using the PhotonRPCBatcher. * Revert unintended get_license.yml change * Remote player controller size fix * Synch -> Sync * Sync not reaching 100% on display * Nickname disappearing from panel after disconnection * Persistent nickname we save the nickname in the PlayerPrefsDataStore * What's New" button string overwritten Fix * New Define -> MP_PHOTON * Update README.md * Missing En Description * Fix Labs and Scripts panels * Disable clear sketch when in multiplayer todo --> 1. enable just for room owner 2. Create RPC comand * Update PhotonStructs.cs miss defined * Update MultiplayerPanel.prefab Beta Tag via localization * Localization Added for Multiplayer Panel * InitialiSing -> InitialiZing * UnamedUser -> UnnamedUser * Update README.md fixes to readme * Disable passthrough in multiplayer * Runtime switching for experimental brushes * Photon does not join (room full) Realtime Voice joins anyway Photon does not join the room (room full) while Realtime Voice joins anyway * Localization fix * Icon experimental badges need to update all the time * Add alert to check if passthrough environment is active * Remove hardcoded passthrough GUID Replaced PASSTHROUGH_GUID = "e38af599-4575-46ff-a040-459703dbcd36"; with a new property isPassthrough in the environment scriptable object. * Multiplayer admin menu string fix * Disable Join Button if in PassThrough mode * PhotonPlayerRig -> TextMeshPro -> autosize Nickname to fit in the headset * UnnamedUser -> Unnamed * Sync reaching 100% and complete * Grey out the 'What's New' button on the admin panel. * Sync reaching 100% and complete --------- Co-authored-by: Mike Nisbet Co-authored-by: Mike Nisbet Co-authored-by: Riccardo Bovo Co-authored-by: Mike Miller Co-authored-by: Riccardo Bovo --- .github/workflows/build.yml | 7 +- .gitignore | 2 + Assets/Editor/BuildTiltBrush.cs | 4 +- Assets/Editor/MultiplayerManagerEditor.cs | 189 + .../Editor/MultiplayerManagerEditor.cs.meta | 11 + Assets/OculusMR/OculusMRController.cs | 12 +- .../Resources/NetworkProjectConfig.fusion | 175 +- .../NetworkProjectConfig.fusion.meta | 8 +- .../Fusion/Resources/PhotonAppSettings.asset | 31 + Assets/Plugins/Android/AndroidManifest.xml | 2 +- Assets/Prefabs/BetaTag.prefab | 415 ++ Assets/Prefabs/BetaTag.prefab.meta | 7 + Assets/Prefabs/HMDMesh.prefab | 2 +- Assets/Prefabs/Panels/AdminPanel.prefab | 621 +- .../Prefabs/Panels/AdminPanel_Mobile.prefab | 13 +- Assets/Prefabs/Panels/MultiplayerPanel.prefab | 6006 +++++++++++++++++ .../Panels/MultiplayerPanel.prefab.meta | 7 + .../PopUps/GDriveSync/DisabledElements.prefab | 490 +- .../PopUps/GDriveSync/EnabledElements.prefab | 482 +- .../PopUps/PopUpWindow_Keyboard.prefab | 236 +- .../PopUps/PopUpWindow_NumericKeyboard.prefab | 42 +- .../PopUps/PopUpWindow_WaitOnSync.prefab | 597 ++ .../PopUps/PopUpWindow_WaitOnSync.prefab.meta | 7 + .../Passthrough/Passthrough.asset | 2 +- Assets/Resources/Icons/connect.png | Bin 0 -> 2841 bytes Assets/Resources/Icons/connect.png.meta | 127 + Assets/Resources/Icons/disconnect.png | Bin 0 -> 3213 bytes Assets/Resources/Icons/disconnect.png.meta | 127 + Assets/Resources/Icons/edit.png | Bin 0 -> 2647 bytes Assets/Resources/Icons/edit.png.meta | 127 + Assets/Resources/Icons/enter.png | Bin 0 -> 1537 bytes Assets/Resources/Icons/enter.png.meta | 127 + Assets/Resources/Icons/exitmultiplayer.png | Bin 0 -> 2428 bytes .../Resources/Icons/exitmultiplayer.png.meta | 127 + Assets/Resources/Icons/multiplayer.png | Bin 0 -> 3052 bytes Assets/Resources/Icons/multiplayer.png.meta | 171 + .../Multiplayer/Photon/PhotonPlayerRig.prefab | 2795 +++++++- .../Multiplayer/Photon/SpeakerPrefab.prefab | 148 + .../Photon/SpeakerPrefab.prefab.meta | 7 + Assets/Resources/UnityGLTFSettings.asset | 29 +- Assets/Scenes/Main.unity | 205 +- Assets/Scripts/App.cs | 41 +- Assets/Scripts/BrushCatalog.cs | 15 +- Assets/Scripts/Commands/BaseCommand.cs | 36 + Assets/Scripts/Commands/BrushStrokeCommand.cs | 13 + .../Scripts/Commands/DeleteStrokeCommand.cs | 9 + .../Commands/SwitchEnvironmentCommand.cs | 20 +- Assets/Scripts/Config.cs | 20 +- Assets/Scripts/Environment.cs | 1 + Assets/Scripts/EnvironmentCatalog.cs | 2 +- Assets/Scripts/GUI/AdminPanel.cs | 1 + Assets/Scripts/GUI/AppSettingsPanel.cs | 3 +- Assets/Scripts/GUI/BasePanel.cs | 1 + Assets/Scripts/GUI/BrushTypeButton.cs | 5 +- Assets/Scripts/GUI/LightingPopUpWindow.cs | 42 +- Assets/Scripts/GUI/LocalePopUpWindow.cs | 2 +- Assets/Scripts/GUI/MultiplayerPanel.cs | 369 + Assets/Scripts/GUI/MultiplayerPanel.cs.meta | 11 + Assets/Scripts/GUI/MultiplayerPanelButton.cs | 45 + .../GUI/MultiplayerPanelButton.cs.meta | 11 + Assets/Scripts/GUI/PanelManager.cs | 57 +- Assets/Scripts/GUI/SketchbookButton.cs | 8 + Assets/Scripts/InfoCardAnimation.cs | 13 +- .../Multiplayer/MultiplayerDataStructs.cs | 41 +- .../Multiplayer/MultiplayerInterfaces.cs | 56 +- .../Scripts/Multiplayer/MultiplayerManager.cs | 483 +- .../Multiplayer/MultiplayerSceneSync.cs | 351 + .../Multiplayer/MultiplayerSceneSync.cs.meta | 11 + .../MultiplayerStrokeSerialization.cs | 162 + .../MultiplayerStrokeSerialization.cs.meta | 11 + .../Multiplayer/Photon/NetworkingConstants.cs | 42 + .../Photon/NetworkingConstants.cs.meta | 11 + .../Multiplayer/Photon/PhotonManager.cs | 537 +- .../Multiplayer/Photon/PhotonPlayerRig.cs | 238 +- .../Scripts/Multiplayer/Photon/PhotonRPC.cs | 418 +- .../Multiplayer/Photon/PhotonRPCBatcher.cs | 73 + .../Photon/PhotonRPCBatcher.cs.meta | 11 + .../Multiplayer/Photon/PhotonStructs.cs | 10 +- .../Multiplayer/Photon/PhotonVoiceManager.cs | 344 + .../Photon/PhotonVoiceManager.cs.meta | 11 + Assets/Scripts/PointerManager.cs | 12 +- Assets/Scripts/PointerScript.cs | 9 +- Assets/Scripts/Rendering/IconTextureAtlas.cs | 2 +- Assets/Scripts/Save/SaveLoadScript.cs | 65 + Assets/Scripts/Save/SketchSnapshot.cs | 49 + Assets/Scripts/Save/SketchWriter.cs | 252 +- Assets/Scripts/SecretsConfig.cs | 1 + Assets/Scripts/SketchBinaryReader.cs | 7 + Assets/Scripts/SketchBinaryWriter.cs | 6 + Assets/Scripts/SketchControlsScript.cs | 88 +- Assets/Scripts/SketchMemoryScript.cs | 102 +- Assets/Scripts/Stroke.cs | 4 + Assets/Scripts/StrokeData.cs | 17 + Assets/Scripts/UserConfig.cs | 48 +- .../Strings/Strings Shared Data.asset | 112 +- .../Localization/Strings/Strings_de.asset | 64 +- .../Localization/Strings/Strings_en.asset | 84 +- .../Localization/Strings/Strings_es.asset | 62 +- .../Localization/Strings/Strings_fr.asset | 63 +- .../Localization/Strings/Strings_ja.asset | 62 +- .../Localization/Strings/Strings_ko.asset | 65 +- .../Localization/Strings/Strings_zh.asset | 62 +- README.md | 12 + 103 files changed, 16475 insertions(+), 1666 deletions(-) create mode 100644 Assets/Editor/MultiplayerManagerEditor.cs create mode 100644 Assets/Editor/MultiplayerManagerEditor.cs.meta create mode 100644 Assets/Photon/Fusion/Resources/PhotonAppSettings.asset create mode 100644 Assets/Prefabs/BetaTag.prefab create mode 100644 Assets/Prefabs/BetaTag.prefab.meta create mode 100644 Assets/Prefabs/Panels/MultiplayerPanel.prefab create mode 100644 Assets/Prefabs/Panels/MultiplayerPanel.prefab.meta create mode 100644 Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab create mode 100644 Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab.meta create mode 100644 Assets/Resources/Icons/connect.png create mode 100644 Assets/Resources/Icons/connect.png.meta create mode 100644 Assets/Resources/Icons/disconnect.png create mode 100644 Assets/Resources/Icons/disconnect.png.meta create mode 100644 Assets/Resources/Icons/edit.png create mode 100644 Assets/Resources/Icons/edit.png.meta create mode 100644 Assets/Resources/Icons/enter.png create mode 100644 Assets/Resources/Icons/enter.png.meta create mode 100644 Assets/Resources/Icons/exitmultiplayer.png create mode 100644 Assets/Resources/Icons/exitmultiplayer.png.meta create mode 100644 Assets/Resources/Icons/multiplayer.png create mode 100644 Assets/Resources/Icons/multiplayer.png.meta create mode 100644 Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab create mode 100644 Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab.meta create mode 100644 Assets/Scripts/GUI/MultiplayerPanel.cs create mode 100644 Assets/Scripts/GUI/MultiplayerPanel.cs.meta create mode 100644 Assets/Scripts/GUI/MultiplayerPanelButton.cs create mode 100644 Assets/Scripts/GUI/MultiplayerPanelButton.cs.meta create mode 100644 Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs create mode 100644 Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs.meta create mode 100644 Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs create mode 100644 Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs.meta create mode 100644 Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs create mode 100644 Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs.meta create mode 100644 Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs create mode 100644 Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs.meta create mode 100644 Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs create mode 100644 Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs.meta diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c37c2bb38a..eff7b033af 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -352,7 +352,7 @@ jobs: with: token: ${{ env.PHOTON_PAT }} repository: icosa-mirror/photon-fusion - ref: v1.1.8 + ref: Fusion_v2_Voice_2 path: photon-fusion-mirror/ - name: Copy photon files @@ -449,6 +449,11 @@ jobs: run: | sed -e 's/androidUseCustomKeystore.*$/androidUseCustomKeystore: 1/' -i ProjectSettings/ProjectSettings.asset + - name: Add PHOTON_PAT specific define + if: ${{ env.PHOTON_PAT }} + run: | + echo -e "\n -define:MP_PHOTON \n -define:PHOTON_UNITY_NETWORKING \n-define:PUN_2_0_OR_NEWER \n-define:PUN_2_OR_NEWER \n-define:PUN_2_19_OR_NEWER \n-define:FUSION_WEAVER \n-define:FUSION2 \n-define:CROSS_PLATFORM_INPUT \n-define:MOBILE_INPUT \n-define:PHOTON_VOICE_DEFINED" | tee -a Assets/csc.rsp + - name: Update build matrix specific defines in csc.rsp if: ${{ matrix.extra_defines }} run: | diff --git a/.gitignore b/.gitignore index 48368ea94c..495b2bc0c2 100644 --- a/.gitignore +++ b/.gitignore @@ -106,6 +106,8 @@ Packages/com.unity.xr.picoxr /Assets/Photon/** /Assets/Photon.meta !/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion* +!/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset* +!/Assets/Photon/Fusion/User/NetworkPrefabAssetCollection.asset* # Cache files *.cache diff --git a/Assets/Editor/BuildTiltBrush.cs b/Assets/Editor/BuildTiltBrush.cs index a8af77a93d..a63f6ed928 100644 --- a/Assets/Editor/BuildTiltBrush.cs +++ b/Assets/Editor/BuildTiltBrush.cs @@ -1435,7 +1435,7 @@ static void ShowBrushExportTextures() using (var unused = new TempHookUpSingletons()) { // Set consultUserConfig = false to keep user config from affecting the build output. - TiltBrushManifest manifest = App.Instance.GetMergedManifest(forceExperimental: true); + TiltBrushManifest manifest = App.Instance.ManifestFull; StringBuilder s = new StringBuilder(); foreach (BrushDescriptor desc in manifest.UniqueBrushes()) @@ -1547,7 +1547,7 @@ public static void DoBuild(TiltBuildOptions tiltOptions) // to be run at build-time (ie when nobody has called Start(), Awake()). // TempHookupSingletons() has done just enough initialization to make it happy. // Also set consultUserConfig = false to keep user config from affecting the build output. - TiltBrushManifest manifest = App.Instance.GetMergedManifest(forceExperimental: true); + TiltBrushManifest manifest = App.Instance.ManifestFull; // Some sanity checks { diff --git a/Assets/Editor/MultiplayerManagerEditor.cs b/Assets/Editor/MultiplayerManagerEditor.cs new file mode 100644 index 0000000000..91434ebf73 --- /dev/null +++ b/Assets/Editor/MultiplayerManagerEditor.cs @@ -0,0 +1,189 @@ +// MultiplayerManagerInspector.cs +using UnityEditor; +using UnityEngine; +using OpenBrush.Multiplayer; +using System.Threading.Tasks; +using System.ComponentModel.Composition; + +#if UNITY_EDITOR +[CustomEditor(typeof(MultiplayerManager))] +public class MultiplayerManagerInspector : Editor +{ + private MultiplayerManager multiplayerManager; + private string roomName = "1234"; + private bool isPrivate = false; + private int maxPlayers = 4; + private bool voiceDisabled = false; + + public override void OnInspectorGUI() + { + multiplayerManager = (MultiplayerManager)target; + + DrawDefaultInspector(); + + GUILayout.Space(10); + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + GUILayout.Space(10); + + roomName = EditorGUILayout.TextField("Room Name", roomName); + + //State + string connectionState = ""; + if (multiplayerManager != null) connectionState = multiplayerManager.State.ToString(); + else connectionState = "Not Assigned"; + + GUILayout.Space(10); + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("Connection State: ", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"{connectionState}"); + EditorGUILayout.EndHorizontal(); + GUILayout.Space(5); + + if (GUILayout.Button("Connect")) + { + ConnectToLobby(); + EditorUtility.SetDirty(target); + } + + + if (GUILayout.Button("Join Room")) + { + ConnectToRoom(); + EditorUtility.SetDirty(target); + } + + + if (GUILayout.Button("Exit Room")) + { + DisconnectFromRoom(); + EditorUtility.SetDirty(target); + } + + + if (GUILayout.Button("Disconnect")) + { + Disconnect(); + EditorUtility.SetDirty(target); + } + + if (GUILayout.Button("Refresh Room List")) + { + CheckIfRoomExists(); + EditorUtility.SetDirty(target); + } + + //Local Player Id + string localPlayerId = ""; + if (multiplayerManager.m_LocalPlayer != null) localPlayerId = multiplayerManager.m_LocalPlayer.PlayerId.ToString(); + else localPlayerId = "Not Assigned"; + + GUILayout.Space(10); + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("Local Player ID: ", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"{localPlayerId}"); + EditorGUILayout.EndHorizontal(); + + //Room Ownership + string ownership = ""; + if (multiplayerManager != null && multiplayerManager.IsUserRoomOwner()) ownership = "Yes"; + else if (multiplayerManager != null && !multiplayerManager.IsUserRoomOwner()) ownership = "No"; + else ownership = "Not Assigned"; + + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("Is Local Player Room Owner:", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"{ownership}"); + EditorGUILayout.EndHorizontal(); + + //Remote Users + string remoteUsersRegistered = ""; + if (multiplayerManager.m_RemotePlayers != null && multiplayerManager.m_RemotePlayers.Count > 0) + { + remoteUsersRegistered = "UserIds:[ "; + foreach (var remotePlayer in multiplayerManager.m_RemotePlayers) + { + remoteUsersRegistered += remotePlayer.PlayerId.ToString() + ","; + } + remoteUsersRegistered += "]"; + } + else remoteUsersRegistered = "Not Assigned"; + + //Registered remote players + + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("Registered Remote Players IDs:", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"{remoteUsersRegistered}"); + EditorGUILayout.EndHorizontal(); + + // Display and edit Nickname + GUILayout.Space(10); + EditorGUILayout.LabelField("Nickname", GUI.skin.horizontalSlider); + string currentNickname = multiplayerManager.UserInfo.Nickname; + GUILayout.Label("Nickname", EditorStyles.boldLabel); + string newNickname = EditorGUILayout.TextField("Edit Nickname", currentNickname); + if (newNickname != currentNickname) + { + ConnectionUserInfo updatedUserInfo = multiplayerManager.UserInfo; + updatedUserInfo.Nickname = newNickname; + multiplayerManager.UserInfo = updatedUserInfo; + EditorUtility.SetDirty(target); // Mark the target as dirty to apply changes + } + + + Repaint(); + + } + + private async void ConnectToLobby() + { + if (multiplayerManager != null) + { + bool success = await multiplayerManager.Connect(); + } + } + + private async void ConnectToRoom() + { + if (multiplayerManager != null) + { + RoomCreateData roomData = new RoomCreateData + { + roomName = roomName, + @private = isPrivate, + maxPlayers = maxPlayers, + voiceDisabled = voiceDisabled + }; + + bool success = await multiplayerManager.JoinRoom(roomData); + + } + } + + private async void DisconnectFromRoom() + { + if (multiplayerManager != null) + { + bool success = await multiplayerManager.LeaveRoom(); + + } + } + + private async void Disconnect() + { + if (multiplayerManager != null) + { + bool success = await multiplayerManager.Disconnect(); + + } + } + + private void CheckIfRoomExists() + { + if (multiplayerManager != null) + { + bool roomExists = multiplayerManager.DoesRoomNameExist(roomName); + } + } +} +#endif diff --git a/Assets/Editor/MultiplayerManagerEditor.cs.meta b/Assets/Editor/MultiplayerManagerEditor.cs.meta new file mode 100644 index 0000000000..48c328620f --- /dev/null +++ b/Assets/Editor/MultiplayerManagerEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd27756f885442546a0ff09f78c36081 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OculusMR/OculusMRController.cs b/Assets/OculusMR/OculusMRController.cs index 746b74b1df..0e67eeecab 100644 --- a/Assets/OculusMR/OculusMRController.cs +++ b/Assets/OculusMR/OculusMRController.cs @@ -57,11 +57,19 @@ public async void StartMRExperience(bool isHosting) { await m_SpatialAnchorManager.CreateSpatialAnchor(); m_SpatialAnchorManager.SceneLocalizeToAnchor(); - MultiplayerManager.m_Instance.Connect(); + MultiplayerManager.m_Instance.JoinRoom(new RoomCreateData() + { + roomName = "OculusMRRoom", + maxPlayers = 12 + }); } else { - MultiplayerManager.m_Instance.Connect(); + MultiplayerManager.m_Instance.JoinRoom(new RoomCreateData() + { + roomName = "OculusMRRoom", + maxPlayers = 12 + }); } } diff --git a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion index 526a559a17..84a91810f2 100644 --- a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion +++ b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion @@ -2,160 +2,69 @@ "Version": 1, "TypeId": "NetworkProjectConfig", "PeerMode": 0, - "PhysicsEngine": 0, - "ServerPhysicsMode": 0, - "UseLagCompensation": true, "LagCompensation": { - "HitboxBufferSize": 12, - "HitboxCapacity": 512, - "ExpansionFactor": 0.20000000298023225, - "Optimize": false, - "DebugBroadphase": false, - "DebugHistory": false, - "DebugColor": { - "r": 0.0, - "g": 1.0, - "b": 0.0, - "a": 0.5 - }, - "ClientDebugColor": { - "r": 0.0, - "g": 0.0, - "b": 1.0, - "a": 0.5 - }, - "HistoryDebugColor": { - "r": 0.0, - "g": 0.0, - "b": 1.0, - "a": 0.5 - } + "Enabled": false, + "HitboxBufferLengthInMs": 200, + "HitboxDefaultCapacity": 512, + "CachedStaticCollidersSize": 64 }, - "SceneLoadSpawnMode": 0, - "DeltaCompressor": 0, + "EnqueueIncompleteSynchronousSpawns": false, "InvokeRenderInBatchMode": true, - "MaxNetworkedObjectCount": 8192, "NetworkIdIsObjectName": false, "HideNetworkObjectInactivityGuard": false, - "EnableHostMigration": false, - "HostMigrationSnapshotInterval": 60, + "AllowClientServerModesInWebGL": false, "Simulation": { "InputDataWordCount": 0, - "TickRate": 60, - "MaxPrediction": 60, - "DefaultPlayers": 10, - "ReplicationMode": 0, - "ObjectInterest": false, - "ServerPacketInterval": 1, - "ClientPacketInterval": 1 - }, - "Interpolation": { - "DeltaAdjustment": 1, - "AllowedJitter": 25, - "SnapLimit": 200, - "MultiplierMin": 1.25, - "MultiplierMax": 3.0 + "ReplicationFeatures": 1, + "InputTransferMode": 0, + "SimulationUpdateTimeMode": 0, + "PlayerCount": 10, + "TickRateSelection": { + "Client": 64, + "ServerIndex": 0, + "ClientSendIndex": 1, + "ServerSendIndex": 1 + } }, "Network": { - "SocketSendBufferSize": 256, - "SocketRecvBufferSize": 256, - "ConnectAttempts": 10, - "ConnectInterval": 0.5, - "ConnectionDefaultRtt": 0.1, "ConnectionTimeout": 10.0, - "ConnectionPingInterval": 1.0, "ConnectionShutdownTime": 1.0, - "MtuDefault": 1136, "ReliableDataTransferModes": 3 }, + "HostMigration": { + "EnableAutoUpdate": false, + "UpdateDelay": 10 + }, + "EncryptionConfig": { + "EnableEncryption": false + }, "NetworkConditions": { "Enabled": false, - "DelayShape": 1, - "DelayMin": 0.01, - "DelayMax": 0.1, - "DelayPeriod": 3.0, - "DelayThreshold": 0.5, - "AdditionalJitter": 0.01, - "LossChanceShape": 1, - "LossChanceMin": 0.0, - "LossChanceMax": 0.02, - "LossChanceThreshold": 0.9, - "LossChancePeriod": 3.0, - "AdditionalLoss": 0.005 + "DelayShape": 0, + "DelayMin": 0.15, + "DelayMax": 0.15, + "DelayPeriod": 0.0, + "DelayThreshold": 0.0, + "AdditionalJitter": 0.05, + "LossChanceShape": 0, + "LossChanceMin": 0.05, + "LossChanceMax": 0.05, + "LossChanceThreshold": 0.0, + "LossChancePeriod": 0.0, + "AdditionalLoss": 0.0 }, "Heap": { - "PageShift": 14, - "PageCount": 128, + "PageShift": 15, + "PageCount": 256, "GlobalsSize": 0 }, - "AccuracyDefaults": { - "coreKeys": [ - "Uncompressed", - "Default", - "Position", - "Rotation", - "NormalizedTime" - ], - "coreDefs": [ - { - "_value": 0.0, - "_inverse": Infinity, - "_hash": -1382104104 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -814817977 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -194233199 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -258202764 - }, - { - "_value": 0.00009999999747378752, - "_inverse": 10000.0, - "_hash": 1061325578 - } - ], - "coreVals": [ - { - "_value": 0.0, - "_inverse": Infinity, - "_hash": -1382104104 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -814817977 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -194233199 - }, - { - "_value": 0.0010000000474974514, - "_inverse": 999.9999389648438, - "_hash": -258202764 - }, - { - "_value": 0.00009999999747378752, - "_inverse": 10000.0, - "_hash": 1061325578 - } - ], - "tags": [], - "values": [] - }, "AssembliesToWeave": [ + "Fusion.Unity", "Assembly-CSharp", - "Assembly-CSharp-firstpass" + "Assembly-CSharp-firstpass", + "Fusion.Addons.Physics", + "Fusion.Addons.FSM", + "PhotonVoice.Fusion" ], "UseSerializableDictionary": true, "NullChecksForNetworkedProperties": true, diff --git a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta index 4e2a77bdf0..b51f264e1e 100644 --- a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta +++ b/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta @@ -1,5 +1,7 @@ fileFormatVersion: 2 -guid: dd4ca0370d231e84e889cd4edcaf0bde +guid: 9c11b716d72ba6c4cb7ca372c6e1590d +labels: +- FusionDefaultGlobal ScriptedImporter: internalIDToNameTable: [] externalObjects: {} @@ -8,4 +10,6 @@ ScriptedImporter: assetBundleName: assetBundleVariant: script: {fileID: 11500000, guid: 66a64a17d0b40f34f9224317a5a84bf2, type: 3} - PrefabAssetsContainerPath: + PrefabOptions: + UnloadPrefabOnReleasingLastInstance: 0 + UnloadUnusedPrefabsOnShutdown: 0 diff --git a/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset b/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset new file mode 100644 index 0000000000..947441c8ca --- /dev/null +++ b/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset @@ -0,0 +1,31 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1878438611, guid: 7de3b8b9e1263ad479e2d0c4261b7646, type: 3} + m_Name: PhotonAppSettings + m_EditorClassIdentifier: + AppSettings: + AppIdFusion: + AppIdChat: + AppIdVoice: + AppVersion: + UseNameServer: 1 + FixedRegion: + Server: + Port: 0 + ProxyServer: + Protocol: 0 + EnableProtocolFallback: 1 + AuthMode: 0 + EnableLobbyStatistics: 0 + NetworkLogging: 1 + encryptionMode: 0 + emptyRoomTtl: 0 diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml index 179339006b..b50dec3524 100644 --- a/Assets/Plugins/Android/AndroidManifest.xml +++ b/Assets/Plugins/Android/AndroidManifest.xml @@ -18,7 +18,7 @@ - + diff --git a/Assets/Prefabs/BetaTag.prefab b/Assets/Prefabs/BetaTag.prefab new file mode 100644 index 0000000000..fe7bbe60fe --- /dev/null +++ b/Assets/Prefabs/BetaTag.prefab @@ -0,0 +1,415 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &492106549256326987 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8171046643914759413} + - component: {fileID: 2382359695583312413} + - component: {fileID: 7242636611821479444} + m_Layer: 16 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8171046643914759413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492106549256326987} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.002} + m_LocalScale: {x: 10, y: 6, z: 6} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4378067676344109730} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2382359695583312413 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492106549256326987} + m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} +--- !u!23 &7242636611821479444 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492106549256326987} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 28d0bd4d20e3f8143994275754956c5e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &768695854730814423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7395277295064072936} + - component: {fileID: 400887753388735756} + - component: {fileID: 2556331195588322189} + - component: {fileID: 6612620938781836974} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7395277295064072936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768695854730814423} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4378067676344109730} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &400887753388735756 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768695854730814423} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &2556331195588322189 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768695854730814423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: BETA + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.79 + m_fontSizeBase: 0.79 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 400887753388735756} + m_maskType: 0 +--- !u!114 &6612620938781836974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 768695854730814423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 3215294302546034780 + references: + version: 2 + RefIds: + - rid: 3215294302546034780 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 2556331195588322189} + m_TrackedProperties: + items: + - rid: 3215294302546034781 + m_UpdateType: 0 + - rid: 3215294302546034781 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 76121021711179776 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text +--- !u!1 &2206467382688623040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4378067676344109730} + m_Layer: 0 + m_Name: BetaTag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4378067676344109730 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2206467382688623040} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7395277295064072936} + - {fileID: 8171046643914759413} + - {fileID: 1853447512016924465} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2586623423367620634 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1853447512016924465} + - component: {fileID: 6116880465705314692} + - component: {fileID: 5545206284097801361} + m_Layer: 16 + m_Name: Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1853447512016924465 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2586623423367620634} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.004} + m_LocalScale: {x: 10.75, y: 10.75, z: 7} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4378067676344109730} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6116880465705314692 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2586623423367620634} + m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} +--- !u!23 &5545206284097801361 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2586623423367620634} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Prefabs/BetaTag.prefab.meta b/Assets/Prefabs/BetaTag.prefab.meta new file mode 100644 index 0000000000..cef13a179b --- /dev/null +++ b/Assets/Prefabs/BetaTag.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2538d4a3972b37c4c9e8649481dd9a2b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/HMDMesh.prefab b/Assets/Prefabs/HMDMesh.prefab index 6656788973..0a620cf954 100644 --- a/Assets/Prefabs/HMDMesh.prefab +++ b/Assets/Prefabs/HMDMesh.prefab @@ -25,13 +25,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1448111865499013753} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1448111865499013748 MeshFilter: diff --git a/Assets/Prefabs/Panels/AdminPanel.prefab b/Assets/Prefabs/Panels/AdminPanel.prefab index 44487082a1..b3c8e4d9f6 100644 --- a/Assets/Prefabs/Panels/AdminPanel.prefab +++ b/Assets/Prefabs/Panels/AdminPanel.prefab @@ -25,6 +25,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000816559363234} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 6.277, y: 15.634, z: 3.794} m_LocalScale: {x: 1, y: 1, z: 1} @@ -34,7 +35,6 @@ Transform: - {fileID: 4603977406768154} - {fileID: 4035380900912510} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &114828844590133850 MonoBehaviour: @@ -48,7 +48,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8aef76c4a1603ae4a9b2be90c69653da, type: 3} m_Name: m_EditorClassIdentifier: - m_PanelType: 26 + m_PanelType: 4 m_Collider: {fileID: 65962833710381506} m_Mesh: {fileID: 1577576848578658} m_Border: {fileID: 23798923668222696} @@ -164,6 +164,14 @@ MonoBehaviour: renderer: {fileID: 0} baseLocalPos: {x: 0, y: 0, z: 0} baseScale: {x: 0, y: 0, z: 0} + - button: {fileID: 541920620010414687} + renderer: {fileID: 0} + baseLocalPos: {x: 0, y: 0, z: 0} + baseScale: {x: 0, y: 0, z: 0} + - button: {fileID: 3913670656884359384} + renderer: {fileID: 0} + baseLocalPos: {x: 0, y: 0, z: 0} + baseScale: {x: 0, y: 0, z: 0} m_SaveNewButton: {fileID: 1922662397484504} m_SaveOptionsButton: {fileID: 1151082384707834} m_SettingsButton: {fileID: 1936268928807740} @@ -177,6 +185,7 @@ MonoBehaviour: m_MemoryWarning: {fileID: 1603096109966042} m_MemoryWarningButton: {fileID: 1712905289553642} m_MemoryWarningColor: {r: 0.78676474, g: 0.09256055, b: 0.09256055, a: 1} + m_MultiplayerButton: {fileID: 5787249127137797294} m_ButtonRotationAngle: 45 m_ShareButtonLoggedOutExtraText: m_TableReference: @@ -228,13 +237,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1106930226929544} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.049999878} m_LocalScale: {x: 0.85057116, y: 0.85057116, z: 0.85057116} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4402161299253448} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33482202212998726 MeshFilter: @@ -313,13 +322,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1151082384707834} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.4499998, z: 0.049999952} + m_LocalPosition: {x: -0.218, y: 0.476, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33825377552793314 MeshFilter: @@ -379,9 +388,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1151082384707834} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114436392384945342 @@ -403,7 +420,7 @@ MonoBehaviour: m_TableReference: m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 m_TableEntryReference: - m_KeyId: 5064506084139008 + m_KeyId: 312729904472465408 m_Key: m_FallbackState: 0 m_WaitForCompletion: 0 @@ -487,13 +504,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1192991703587922} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.6, y: 1.6, z: 1.6} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4482757564845618} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33907749212384082 MeshFilter: @@ -569,13 +586,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1222021979522926} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0.04, z: 0.05} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4035380900912510} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33386300729919342 MeshFilter: @@ -609,13 +626,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1229321774763870} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4035380900912510} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65063648299555090 BoxCollider: @@ -625,9 +642,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1229321774763870} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.5, y: 1.55, z: 0.05} m_Center: {x: 0, y: -0.05, z: -0.03} --- !u!1 &1262073490112886 @@ -657,13 +682,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1262073490112886} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.38999987, y: 0.22500038, z: 0.049999952} + m_LocalPosition: {x: 0.463, y: 0.216, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33941583646683618 MeshFilter: @@ -723,9 +748,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1262073490112886} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114969883342015630 @@ -831,13 +864,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1289872023204522} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4402161299253448} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33356562983312826 MeshFilter: @@ -912,6 +945,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1349288981255934} + serializedVersion: 2 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} @@ -919,18 +953,19 @@ Transform: m_Children: - {fileID: 4931497879020284} - {fileID: 4298548666588398} + - {fileID: 3913670656884359384} - {fileID: 4476673398456346} - {fileID: 4115296977812378} - {fileID: 4670881044846100} - {fileID: 4334957410348514} - {fileID: 4286627721716940} + - {fileID: 541920620010414687} - {fileID: 4478129342109116} - {fileID: 4736542122326996} - {fileID: 4766230287867736} - {fileID: 4569698380707294} - {fileID: 412988840869617173} m_Father: {fileID: 4035380900912510} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1411794300516396 GameObject: @@ -959,6 +994,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1411794300516396} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.025} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} @@ -967,7 +1003,6 @@ Transform: - {fileID: 4176161590853336} - {fileID: 4188334422648780} m_Father: {fileID: 4035380900912510} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33703830478315952 MeshFilter: @@ -1092,7 +1127,7 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 + m_AllowUnavailable: 1 m_LinkedUIObject: {fileID: 0} m_AdjustDistanceAmount: 1 m_IconRenderer: {fileID: 23861549990399966} @@ -1107,9 +1142,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1411794300516396} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.25} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1577576848578658 @@ -1135,6 +1178,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1577576848578658} + serializedVersion: 2 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} @@ -1148,7 +1192,6 @@ Transform: - {fileID: 4402161299253448} - {fileID: 4315711334760372} m_Father: {fileID: 4482757564845618} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1603096109966042 GameObject: @@ -1176,13 +1219,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1603096109966042} + serializedVersion: 2 m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0.25899982, y: 0.21700001, z: -0.035000086} + m_LocalPosition: {x: 0.432, y: 0.444, z: -0.035000086} m_LocalScale: {x: 0.08, y: 0.029999977, z: 0.07999991} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4035380900912510} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33529072324201512 MeshFilter: @@ -1274,13 +1317,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1712905289553642} + serializedVersion: 2 m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} - m_LocalPosition: {x: 0.34899998, y: 0.5290003, z: 0.049999952} + m_LocalPosition: {x: 0.5220003, y: 0.75599957, z: 0.049999952} m_LocalScale: {x: 10, y: 10, z: 10} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!33 &33766935304042522 MeshFilter: @@ -1340,9 +1383,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1712905289553642} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 0.026, y: 0.023, z: 0.0035} m_Center: {x: 0, y: 0.0025, z: 0} --- !u!114 &114210005370009680 @@ -1450,13 +1501,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1784932838058358} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.38999987, y: -0.19999981, z: 0.049999952} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_LocalPosition: {x: 0.49, y: -0.184, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33541849226562688 MeshFilter: @@ -1516,9 +1567,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1784932838058358} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114451730632273282 @@ -1626,13 +1685,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1793958170638982} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.38999987, y: 0.22500038, z: 0.049999952} + m_LocalPosition: {x: -0.48, y: 0.193, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33821366212915112 MeshFilter: @@ -1692,9 +1751,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1793958170638982} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114524679305128758 @@ -1801,13 +1868,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1835688465934486} + serializedVersion: 2 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_LocalScale: {x: 1.3, y: 1.3, z: 1.3} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4035380900912510} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33453747807715154 MeshFilter: @@ -1899,13 +1966,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1841057133452878} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.38999987, y: 0.22500038, z: 0.049999952} + m_LocalPosition: {x: 0.459, y: 0.213, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33555655433307320 MeshFilter: @@ -1965,9 +2032,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1841057133452878} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114553944017920612 @@ -2075,13 +2150,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1843451682130658} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.4499998, z: 0.049999952} + m_LocalPosition: {x: -0.206, y: -0.488, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33394186971539132 MeshFilter: @@ -2141,9 +2216,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1843451682130658} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114591466390577530 @@ -2163,9 +2246,9 @@ MonoBehaviour: m_DescriptionText: m_LocalizedDescription: m_TableReference: - m_TableCollectionName: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 m_TableEntryReference: - m_KeyId: 0 + m_KeyId: 5065626072358912 m_Key: m_FallbackState: 0 m_WaitForCompletion: 0 @@ -2271,13 +2354,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1857847558550948} + serializedVersion: 2 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_LocalScale: {x: 1.3, y: 1.3, z: 1.3} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4035380900912510} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33266412785695894 MeshFilter: @@ -2366,13 +2449,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1900864892112550} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4482757564845618} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65962833710381506 BoxCollider: @@ -2382,9 +2465,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1900864892112550} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 2, y: 2, z: 0.5} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &1922662397484504 @@ -2414,13 +2505,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1922662397484504} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.4499998, z: 0.049999952} + m_LocalPosition: {x: -0.221, y: 0.47, z: 0.049999952} m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33700391611944570 MeshFilter: @@ -2480,9 +2571,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1922662397484504} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114805731067982576 @@ -2504,7 +2603,7 @@ MonoBehaviour: m_TableReference: m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 m_TableEntryReference: - m_KeyId: 5064506084139008 + m_KeyId: 312730512516521984 m_Key: m_FallbackState: 0 m_WaitForCompletion: 0 @@ -2590,13 +2689,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1936268928807740} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.38999987, y: -0.19999981, z: 0.049999952} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_LocalPosition: {x: 0.487, y: -0.178, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33183811785653948 MeshFilter: @@ -2656,9 +2755,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1936268928807740} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114213771481485110 @@ -2766,13 +2873,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1960334381407134} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.38999987, y: -0.19999981, z: 0.049999952} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_LocalPosition: {x: -0.487, y: -0.19999981, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33145436996304012 MeshFilter: @@ -2832,9 +2939,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1960334381407134} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114459347850906084 @@ -2910,7 +3025,7 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 + m_AllowUnavailable: 1 m_LinkedUIObject: {fileID: 0} references: version: 2 @@ -2942,13 +3057,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1976071349665942} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.38999987, y: -0.19999981, z: 0.049999952} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_LocalPosition: {x: -0.484, y: -0.19999981, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4315711334760372} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33631275512957272 MeshFilter: @@ -3008,9 +3123,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1976071349665942} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 0.1} m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} --- !u!114 &114961917929844728 @@ -3086,6 +3209,374 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] +--- !u!1 &1283872556223845477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3913670656884359384} + - component: {fileID: 1109356708297080057} + - component: {fileID: 6407745213757458711} + - component: {fileID: 6605348980898369502} + - component: {fileID: 8695917633644188848} + m_Layer: 16 + m_Name: Button_Empty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3913670656884359384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283872556223845477} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.186, y: 0.482, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4315711334760372} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1109356708297080057 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283872556223845477} + m_Mesh: {fileID: 4300000, guid: 3eae18cf12435234ab8717789135e90b, type: 3} +--- !u!23 &6407745213757458711 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283872556223845477} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &6605348980898369502 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283872556223845477} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &8695917633644188848 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283872556223845477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: ADMIN_PANEL_WHAT_S_NEW_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 5064506084139008 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 78bb99e2fe13ca44d9d0b4ab7882f4ce, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 0 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 101 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] +--- !u!1 &5787249127137797294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 541920620010414687} + - component: {fileID: 1706514172525796950} + - component: {fileID: 2050874730965094072} + - component: {fileID: 5241187314589267000} + - component: {fileID: 6550189700625956158} + m_Layer: 16 + m_Name: Button_Multiplayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &541920620010414687 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5787249127137797294} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.196, y: -0.488, z: 0.049999952} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4315711334760372} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1706514172525796950 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5787249127137797294} + m_Mesh: {fileID: 4300000, guid: 3eae18cf12435234ab8717789135e90b, type: 3} +--- !u!23 &2050874730965094072 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5787249127137797294} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &5241187314589267000 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5787249127137797294} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &6550189700625956158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5787249127137797294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: ADMIN_PANEL_MULTIPLAYER_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 313111533204348928 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: a33145647a3f52648829afbd03b5fa9b, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 0 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1001 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} references: @@ -3096,6 +3587,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4315711334760372} m_Modifications: - target: {fileID: 478447133200725155, guid: 604a64bb74b56a44bb9fbbc997be3ef7, @@ -3224,6 +3716,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 604a64bb74b56a44bb9fbbc997be3ef7, type: 3} --- !u!4 &412988840869617173 stripped Transform: diff --git a/Assets/Prefabs/Panels/AdminPanel_Mobile.prefab b/Assets/Prefabs/Panels/AdminPanel_Mobile.prefab index b37d1cd893..cb9e4b1151 100644 --- a/Assets/Prefabs/Panels/AdminPanel_Mobile.prefab +++ b/Assets/Prefabs/Panels/AdminPanel_Mobile.prefab @@ -5,16 +5,13 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1000816559363234, guid: f5b291cbc819737469486452ea6748b8, type: 3} propertyPath: m_Name value: AdminPanel_Mobile objectReference: {fileID: 0} - - target: {fileID: 4482757564845618, guid: f5b291cbc819737469486452ea6748b8, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4482757564845618, guid: f5b291cbc819737469486452ea6748b8, type: 3} propertyPath: m_LocalPosition.x value: 6.277 @@ -55,11 +52,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 114828844590133850, guid: f5b291cbc819737469486452ea6748b8, - type: 3} - propertyPath: m_PanelType - value: 4 - objectReference: {fileID: 0} - target: {fileID: 114828844590133850, guid: f5b291cbc819737469486452ea6748b8, type: 3} propertyPath: m_PanelPopUpMap.Array.data[2].m_PopUpPrefab @@ -79,4 +71,7 @@ PrefabInstance: objectReference: {fileID: 563727746153209697, guid: 60ddeefaa28cf76478a6671a1193e2c9, type: 3} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f5b291cbc819737469486452ea6748b8, type: 3} diff --git a/Assets/Prefabs/Panels/MultiplayerPanel.prefab b/Assets/Prefabs/Panels/MultiplayerPanel.prefab new file mode 100644 index 0000000000..8757271258 --- /dev/null +++ b/Assets/Prefabs/Panels/MultiplayerPanel.prefab @@ -0,0 +1,6006 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &160214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 415082} + - component: {fileID: 114984344201106630} + - component: {fileID: 114120113036906770} + m_Layer: 16 + m_Name: MultiplayerPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &415082 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160214} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2965947989537662772} + - {fileID: 8346410928580794432} + - {fileID: 438733611317437076} + - {fileID: 3405719730669880946} + - {fileID: 1954481780995984980} + - {fileID: 4000011007410470} + - {fileID: 498528} + - {fileID: 499980} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114984344201106630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8826790ad4eae8c4b9690bfac756b1ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PanelType: 34 + m_Collider: {fileID: 6536704} + m_Mesh: {fileID: 184986} + m_Border: {fileID: 23425245546884932} + m_MeshCollider: {fileID: 6569620} + m_ParticleBounds: {x: 0, y: 0, z: 0} + m_PanelPopUpMap: + - m_PopUpPrefab: {fileID: 8644332587479430734, guid: bdb7d2ac05cca8346b210c2b576878cb, + type: 3} + m_Command: 1005 + - m_PopUpPrefab: {fileID: 8644332587479430734, guid: bdb7d2ac05cca8346b210c2b576878cb, + type: 3} + m_Command: 1009 + m_PanelDescription: + m_LocalizedPanelDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PanelDescriptionPrefab: {fileID: 160918, guid: 3491f4f01ba6cac47b1633f36d7c6c84, + type: 3} + m_PanelDescriptionOffset: {x: 1, y: 1, z: 0} + m_PanelDescriptionColor: {r: 1, g: 1, b: 1, a: 1} + m_PanelFlairPrefab: {fileID: 0} + m_PanelFlairOffset: {x: 0, y: 0, z: 0} + m_DescriptionSpringK: 4 + m_DescriptionSpringDampen: 0.2 + m_DescriptionClosedAngle: -90 + m_DescriptionOpenAngle: 0 + m_DescriptionAlphaDistance: 90 + m_Decor: + - {fileID: 1889327720883680} + m_GazeHighlightScaleMultiplier: 1.1 + m_BorderMeshWidth: 0.02 + m_BorderMeshAdvWidth: 0.01 + m_PanelSensitivity: 0.1 + m_ClampToBounds: 1 + m_ReticleBounds: {x: 2.15, y: 2.55, z: 0} + m_BorderSphereHighlightRadius: 2.5 + m_PositioningSpheresBounds: {x: 1, y: 1} + m_PositioningSphereRadius: 0.4 + m_UseGazeRotation: 1 + m_MaxGazeRotation: 20 + m_GazeActivateSpeed: 8 + m_InitialSpawnPos: {x: 0, y: 13, z: 5} + m_InitialSpawnRotEulers: {x: 0, y: 0, z: 0} + m_WandAttachAngle: 0 + m_WandAttachYOffset: 0 + m_WandAttachHalfHeight: 1.3 + m_BeginFixed: 0 + m_CanBeFixedToWand: 1 + m_CanBeDetachedFromWand: 0 + m_PopUpGazeDuration: 0.2 + m_PromoBorders: [] + m_State: {fileID: 352620620088219705} + m_StatString: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312783011751469056 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_RoomNumber: {fileID: 9160963822650286723} + m_RoomNumberString: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312783116814589952 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_Nickname: {fileID: 4888819335275065630} + m_NicknameString: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312783250461892608 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_RoomOwnership: {fileID: 1415528830258304631} + m_RoomOwnerString: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312963339069759488 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_NotRoomOwnerString: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312963447907753984 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_AlertsErrors: {fileID: 6437857310660163665} + m_AlertsErrorBeginnerModeActive: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312967307862810624 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_AlertsRoomAlreadyExistent: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 312967604588847104 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_AlertsPassThroughAcive: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 156198200358006784 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + references: + version: 2 + RefIds: [] +--- !u!114 &114120113036906770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &169614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420492} + - component: {fileID: 6569620} + m_Layer: 16 + m_Name: MeshCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &420492 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 169614} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.022, y: 0.479, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 499980} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &6569620 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 169614} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.94, y: 2.55, z: 0.02} + m_Center: {x: 0.06, y: -0.06, z: 0} +--- !u!1 &173754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 498528} + - component: {fileID: 6536704} + m_Layer: 16 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &498528 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173754} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.674, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &6536704 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173754} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 2, y: 2, z: 0.5} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &176750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 480900} + - component: {fileID: 3378504} + m_Layer: 16 + m_Name: HighlightMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &480900 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176750} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 499980} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3378504 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176750} + m_Mesh: {fileID: 4300000, guid: 92d56c40cdd919e449581a5798c4c533, type: 3} +--- !u!1 &184986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499980} + m_Layer: 16 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &499980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184986} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 420492} + - {fileID: 480900} + - {fileID: 6533003833265780531} + - {fileID: 3728028955869875737} + - {fileID: 4696385544466816} + - {fileID: 4410849844686322} + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1000013067707022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000011007410470} + - component: {fileID: 33000014291051348} + - component: {fileID: 23000013088760582} + m_Layer: 16 + m_Name: _Bounds(inactive) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4000011007410470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013067707022} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 2.5, z: 2.55} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000014291051348 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013067707022} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000013088760582 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013067707022} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1007290988937762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4153922631777284} + - component: {fileID: 33058761823212030} + - component: {fileID: 23101283692199882} + m_Layer: 16 + m_Name: Quad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4153922631777284 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007290988937762} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.65, y: 0.65, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4410849844686322} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33058761823212030 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007290988937762} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23101283692199882 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007290988937762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0d7eb02b18ffb4c419fb75924cb900dc, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1204492690482570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4410849844686322} + - component: {fileID: 33802401890004714} + - component: {fileID: 23132643551969806} + - component: {fileID: 65355371710737186} + - component: {fileID: 114889102552369014} + m_Layer: 16 + m_Name: Button_ClosePopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4410849844686322 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204492690482570} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.635, y: -0.477, z: -0.01} + m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4153922631777284} + - {fileID: 4402564000880478} + m_Father: {fileID: 499980} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33802401890004714 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204492690482570} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23132643551969806 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204492690482570} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3c8ca511828182747a0b79564892ec57, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &65355371710737186 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204492690482570} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.0000001, y: 1, z: 0.01} + m_Center: {x: 0, y: 0, z: -0.01} +--- !u!114 &114889102552369014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204492690482570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: SETTINGS_PANEL_CLOSE_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 157582826200739840 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1001 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] +--- !u!1 &1744263076835604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4148024965627128} + - component: {fileID: 33937921472497080} + - component: {fileID: 23425245546884932} + m_Layer: 0 + m_Name: SettingsPanelBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4148024965627128 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744263076835604} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4696385544466816} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33937921472497080 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744263076835604} + m_Mesh: {fileID: 43497663539397816, guid: eb32a73de999860498953bf6c8960982, type: 3} +--- !u!23 &23425245546884932 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1744263076835604} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1850095996710182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4887086521611946} + - component: {fileID: 33901426776633756} + - component: {fileID: 23979510237070564} + m_Layer: 0 + m_Name: SettingsPanelBg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4887086521611946 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850095996710182} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4696385544466816} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33901426776633756 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850095996710182} + m_Mesh: {fileID: 4300000, guid: 90e92f1d849f0b448ac3e9a402f08bed, type: 3} +--- !u!23 &23979510237070564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850095996710182} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1852253978840482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4696385544466816} + m_Layer: 0 + m_Name: SettingsPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4696385544466816 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852253978840482} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.448, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4887086521611946} + - {fileID: 4148024965627128} + m_Father: {fileID: 499980} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1889327720883680 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4402564000880478} + - component: {fileID: 33054958406634006} + - component: {fileID: 23246000722874742} + m_Layer: 16 + m_Name: ExitButtonBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4402564000880478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889327720883680} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0.025} + m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4410849844686322} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &33054958406634006 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889327720883680} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23246000722874742 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889327720883680} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &420082715076421484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7629051910496749139} + - component: {fileID: 787750087721286071} + - component: {fileID: 3172630236204918582} + - component: {fileID: 6105232356552213013} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7629051910496749139 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420082715076421484} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3728028955869875737} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &787750087721286071 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420082715076421484} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3172630236204918582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420082715076421484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: BETA + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.79 + m_fontSizeBase: 0.79 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 787750087721286071} + m_maskType: 0 +--- !u!114 &6105232356552213013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420082715076421484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 3215294302546034780 + references: + version: 2 + RefIds: + - rid: 3215294302546034780 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 3172630236204918582} + m_TrackedProperties: + items: + - rid: 3215294302546034781 + m_UpdateType: 0 + - rid: 3215294302546034781 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 76121021711179776 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text +--- !u!1 &696592855043656688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9087129829786851406} + - component: {fileID: 3346539883246239398} + - component: {fileID: 7781543330541298351} + m_Layer: 16 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9087129829786851406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 696592855043656688} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.002} + m_LocalScale: {x: 10, y: 6, z: 6} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3728028955869875737} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3346539883246239398 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 696592855043656688} + m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} +--- !u!23 &7781543330541298351 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 696592855043656688} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 28d0bd4d20e3f8143994275754956c5e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1032351299171828485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 682210897750110130} + - component: {fileID: 9059887426427637701} + - component: {fileID: 6477758959252966850} + - component: {fileID: 5621504769770497967} + - component: {fileID: 3224196841018929977} + m_Layer: 16 + m_Name: ConnectButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &682210897750110130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032351299171828485} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.617, y: -0.484, z: -0.042} + m_LocalScale: {x: 0.33, y: 0.33, z: 0.33} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9059887426427637701 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032351299171828485} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &6477758959252966850 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032351299171828485} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &5621504769770497967 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032351299171828485} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &3224196841018929977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032351299171828485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294636550056648704 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 366faf1780512c44b84568938fb37aaa, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1007 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &1288145675384974715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3728028955869875737} + m_Layer: 0 + m_Name: Beta Tag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3728028955869875737 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1288145675384974715} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: -0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0.823, y: 1.249, z: -0.02} + m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 7629051910496749139} + - {fileID: 9087129829786851406} + - {fileID: 1641104114940865418} + m_Father: {fileID: 499980} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -45} +--- !u!1 &1499154774102387286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8994233172856634412} + - component: {fileID: 3100622910448847287} + - component: {fileID: 352620620088219705} + m_Layer: 16 + m_Name: Status + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8994233172856634412 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499154774102387286} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.147, y: 0.138} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &3100622910448847287 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499154774102387286} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &352620620088219705 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499154774102387286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Status: + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: -0.1872099, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 3100622910448847287} + m_maskType: 0 +--- !u!1 &1697630693985053451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1141409664942745479} + - component: {fileID: 1760323139199521700} + - component: {fileID: 4490950674500302730} + - component: {fileID: 6816865797365254487} + - component: {fileID: 7781273403086602364} + m_Layer: 16 + m_Name: join Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1141409664942745479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697630693985053451} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.329, y: 0.31899986, z: -0.042} + m_LocalScale: {x: 0.4, y: 0.4, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7015233605674447413} + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1760323139199521700 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697630693985053451} + m_Mesh: {fileID: 4300000, guid: 70d5ab47bcc3aa0439e20bd40350c05a, type: 3} +--- !u!23 &4490950674500302730 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697630693985053451} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &6816865797365254487 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697630693985053451} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.4, y: 1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &7781273403086602364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697630693985053451} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: cdc7d38d9e0b30443961d1cc27195586, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1004 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &2296016956045778647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 47429484269554977} + - component: {fileID: 3374390498020739628} + - component: {fileID: 5985317331042495584} + - component: {fileID: 2841728730450484306} + m_Layer: 16 + m_Name: AllertBeginnerMode + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &47429484269554977 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2296016956045778647} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.143, y: 1.355} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &3374390498020739628 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2296016956045778647} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &5985317331042495584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2296016956045778647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: To enter a room turn first set to beginner mode + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190335 + m_fontColor: {r: 1, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.8 + m_fontSizeBase: 0.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: 0.74942493, z: 0.083378464, w: 0.49275255} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 3374390498020739628} + m_maskType: 0 +--- !u!114 &2841728730450484306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2296016956045778647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: [] + references: + version: 2 + RefIds: [] +--- !u!1 &2571361884171689698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6876281661055682962} + - component: {fileID: 5708211407015971906} + - component: {fileID: 3923005959821366055} + m_Layer: 16 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6876281661055682962 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2571361884171689698} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.057142857} + m_LocalScale: {x: 2.5, y: 2.5, z: 2.8571427} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7383649761766971007} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.56, y: 0.8399991} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &5708211407015971906 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2571361884171689698} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3923005959821366055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2571361884171689698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Edit + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.4 + m_fontSizeBase: 1.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0.48827845, y: 0.8604479, z: 0.054796636, w: 0.19184232} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 5708211407015971906} + m_maskType: 0 +--- !u!1 &2994060372226562491 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3068395288206314123} + - component: {fileID: 3015414681375869025} + - component: {fileID: 2890656081255549429} + - component: {fileID: 942730275356831299} + m_Layer: 16 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3068395288206314123 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2994060372226562491} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 438733611317437076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.104, y: 0.9} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &3015414681375869025 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2994060372226562491} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &2890656081255549429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2994060372226562491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: You have successfully joined the room! Share the room number with your + collaborators so they can join too. + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.4 + m_fontSizeBase: 1.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: 0.6332202, z: -0.094255626, w: -0.027681828} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 3015414681375869025} + m_maskType: 0 +--- !u!114 &942730275356831299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2994060372226562491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: [] + references: + version: 2 + RefIds: [] +--- !u!1 &3134540981707160973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7015233605674447413} + - component: {fileID: 6931700069523288738} + - component: {fileID: 8426405893577217330} + m_Layer: 16 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7015233605674447413 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3134540981707160973} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.057142857} + m_LocalScale: {x: 2.5, y: 2.5, z: 2.8571427} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1141409664942745479} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.56, y: 0.8399991} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6931700069523288738 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3134540981707160973} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &8426405893577217330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3134540981707160973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Join + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.4 + m_fontSizeBase: 1.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0.48827845, y: 0.8604479, z: 0.054796636, w: 0.19184232} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6931700069523288738} + m_maskType: 0 +--- !u!1 &3214184211823652001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641104114940865418} + - component: {fileID: 6601465140255059263} + - component: {fileID: 4866733623279814698} + m_Layer: 16 + m_Name: Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1641104114940865418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214184211823652001} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.004} + m_LocalScale: {x: 10.75, y: 10.75, z: 7} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3728028955869875737} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6601465140255059263 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214184211823652001} + m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} +--- !u!23 &4866733623279814698 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3214184211823652001} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &3644177191085397888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2965947989537662772} + m_Layer: 16 + m_Name: LobbyElements + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2965947989537662772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3644177191085397888} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.113, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6321725960906406704} + - {fileID: 47429484269554977} + - {fileID: 1141409664942745479} + - {fileID: 7383649761766971007} + - {fileID: 1616599776894361023} + - {fileID: 7584752043559634152} + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4076170750158864688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7584752043559634152} + - component: {fileID: 8238648932876523510} + - component: {fileID: 1974621732855197313} + m_Layer: 16 + m_Name: RoomNumber + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7584752043559634152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4076170750158864688} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.586, y: 0.13399984} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8238648932876523510 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4076170750158864688} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1974621732855197313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4076170750158864688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 202020 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.7 + m_fontSizeBase: 1.7 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.49373662, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8238648932876523510} + m_maskType: 0 +--- !u!1 &4597522067460985994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6321725960906406704} + - component: {fileID: 2972459032532661851} + - component: {fileID: 5365545856024163458} + - component: {fileID: 2149637936205218271} + m_Layer: 16 + m_Name: DoesRoomExistLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6321725960906406704 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4597522067460985994} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.143, y: 1.138} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &2972459032532661851 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4597522067460985994} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &5365545856024163458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4597522067460985994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: This room does not exist yet. By pressing join, the room will be created. + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.8 + m_fontSizeBase: 0.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: 0.6332202, z: 0.083378464, w: 0.49275255} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2972459032532661851} + m_maskType: 0 +--- !u!114 &2149637936205218271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4597522067460985994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: [] + references: + version: 2 + RefIds: [] +--- !u!1 &4649946342403727185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3577413846294365787} + - component: {fileID: 1001195632747271077} + - component: {fileID: 404572183770810615} + m_Layer: 16 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3577413846294365787 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649946342403727185} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 438733611317437076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.36000013} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &1001195632747271077 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649946342403727185} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &404572183770810615 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649946342403727185} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: ' Room :' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.7 + m_fontSizeBase: 1.7 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.49373662, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1001195632747271077} + m_maskType: 0 +--- !u!1 &4683949721667896528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4609499178869085959} + - component: {fileID: 8677733851088090031} + - component: {fileID: 9160963822650286723} + m_Layer: 16 + m_Name: Room + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4609499178869085959 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4683949721667896528} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.466, y: -0.1400001} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8677733851088090031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4683949721667896528} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &9160963822650286723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4683949721667896528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: RoomName + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.19494265, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8677733851088090031} + m_maskType: 0 +--- !u!1 &5874556256608128191 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2677652558882906679} + - component: {fileID: 2426349157769062346} + - component: {fileID: 4888819335275065630} + m_Layer: 16 + m_Name: NickName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2677652558882906679 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5874556256608128191} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.466, y: -0.44200057} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &2426349157769062346 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5874556256608128191} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &4888819335275065630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5874556256608128191} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: NickName + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.19494265, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2426349157769062346} + m_maskType: 0 +--- !u!1 &5899900900417153719 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3858004711376697373} + - component: {fileID: 9157174449584494178} + - component: {fileID: 4845429684781977610} + - component: {fileID: 1175572973535382090} + - component: {fileID: 2867525648481663953} + m_Layer: 16 + m_Name: DisconnectButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3858004711376697373 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5899900900417153719} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.62, y: -0.48400003, z: -0.042} + m_LocalScale: {x: 0.33, y: 0.33, z: 0.33} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9157174449584494178 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5899900900417153719} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &4845429684781977610 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5899900900417153719} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1175572973535382090 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5899900900417153719} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &2867525648481663953 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5899900900417153719} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294637000357126144 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 56e5ebeba70465c44bf75491d40b6f3d, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1008 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &5921902206488690915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7383649761766971007} + - component: {fileID: 2926107150197885019} + - component: {fileID: 8582249604316496249} + - component: {fileID: 3106886073238925572} + - component: {fileID: 1443552876586975744} + m_Layer: 16 + m_Name: Edit Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7383649761766971007 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5921902206488690915} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.337, y: 0.319, z: -0.042} + m_LocalScale: {x: 0.4, y: 0.4, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6876281661055682962} + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2926107150197885019 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5921902206488690915} + m_Mesh: {fileID: 4300000, guid: 70d5ab47bcc3aa0439e20bd40350c05a, type: 3} +--- !u!23 &8582249604316496249 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5921902206488690915} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &3106886073238925572 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5921902206488690915} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.4, y: 1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &1443552876586975744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5921902206488690915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: cdc7d38d9e0b30443961d1cc27195586, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1005 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &6083642199730771223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8346410928580794432} + m_Layer: 16 + m_Name: Elements + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8346410928580794432 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6083642199730771223} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.336, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 682210897750110130} + - {fileID: 332726704664592371} + - {fileID: 3830748526666750540} + - {fileID: 3858004711376697373} + - {fileID: 8148098001997981085} + - {fileID: 2683548132759635989} + - {fileID: 4609499178869085959} + - {fileID: 2677652558882906679} + - {fileID: 8994233172856634412} + - {fileID: 3004064693637687833} + - {fileID: 5239577752120043582} + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6171746570159008301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438733611317437076} + m_Layer: 16 + m_Name: JoinedElements + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &438733611317437076 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6171746570159008301} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3068395288206314123} + - {fileID: 3577413846294365787} + - {fileID: 4072971569122874247} + - {fileID: 977540286295220915} + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6437768756802778087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4072971569122874247} + - component: {fileID: 6918572163598264854} + - component: {fileID: 932498118536074667} + m_Layer: 16 + m_Name: RoomNumber + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4072971569122874247 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437768756802778087} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 438733611317437076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.586, y: 0.353} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6918572163598264854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437768756802778087} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &932498118536074667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6437768756802778087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 202020 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.7 + m_fontSizeBase: 1.7 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.49373662, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6918572163598264854} + m_maskType: 0 +--- !u!1 &6530187638887373145 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3830748526666750540} + - component: {fileID: 500043193495277236} + - component: {fileID: 7032505750277561405} + - component: {fileID: 6109381147238388491} + - component: {fileID: 8427148437490211341} + m_Layer: 16 + m_Name: LeaveRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3830748526666750540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6530187638887373145} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.208, y: -0.4470001, z: -0.042} + m_LocalScale: {x: 0.33, y: 0.33, z: 0.33} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &500043193495277236 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6530187638887373145} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &7032505750277561405 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6530187638887373145} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &6109381147238388491 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6530187638887373145} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &8427148437490211341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6530187638887373145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294636908816441344 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: f856211cd511f8445b96396ddd0c59bf, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1006 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &6603807884407399516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3004064693637687833} + - component: {fileID: 4811598343171871539} + - component: {fileID: 1415528830258304631} + m_Layer: 16 + m_Name: Room Ownership Status + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3004064693637687833 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603807884407399516} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.147, y: -0.755} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &4811598343171871539 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603807884407399516} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1415528830258304631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603807884407399516} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Room Owner + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: -0.1872099, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 4811598343171871539} + m_maskType: 0 +--- !u!1 &7101128147202961155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 332726704664592371} + - component: {fileID: 5687544308279590595} + - component: {fileID: 8038925281922313174} + - component: {fileID: 1407599492849254995} + - component: {fileID: 9055833328840286294} + m_Layer: 16 + m_Name: JoinRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &332726704664592371 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7101128147202961155} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.206, y: -0.447, z: -0.042} + m_LocalScale: {x: 0.33, y: 0.33, z: 0.33} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5687544308279590595 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7101128147202961155} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &8038925281922313174 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7101128147202961155} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1407599492849254995 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7101128147202961155} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &9055833328840286294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7101128147202961155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294636769901092864 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 1ac81545f10c4fb4d9ada583e88b2f43, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1004 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &7355810358076377629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2683548132759635989} + - component: {fileID: 5233991143414185181} + - component: {fileID: 454729548256029537} + - component: {fileID: 3902811276401445089} + - component: {fileID: 8163065677955154448} + m_Layer: 16 + m_Name: NickNameEditButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2683548132759635989 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7355810358076377629} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.619, y: 0.20199952, z: -0.042} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5233991143414185181 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7355810358076377629} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &454729548256029537 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7355810358076377629} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &3902811276401445089 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7355810358076377629} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &8163065677955154448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7355810358076377629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294637384320491520 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 0141ac6bf9f578f4e95706cdd2117914, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1009 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &7389879374748736206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 977540286295220915} + - component: {fileID: 1862823799823796671} + - component: {fileID: 6441155883621675907} + - component: {fileID: 837553751123664783} + - component: {fileID: 4434619620066107605} + m_Layer: 16 + m_Name: Disconnect Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &977540286295220915 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7389879374748736206} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.01, y: -0.008, z: -0.042} + m_LocalScale: {x: 0.5, y: 0.4, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5290855516666066687} + m_Father: {fileID: 438733611317437076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1862823799823796671 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7389879374748736206} + m_Mesh: {fileID: 4300000, guid: 70d5ab47bcc3aa0439e20bd40350c05a, type: 3} +--- !u!23 &6441155883621675907 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7389879374748736206} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &837553751123664783 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7389879374748736206} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.5, y: 1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &4434619620066107605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7389879374748736206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: cdc7d38d9e0b30443961d1cc27195586, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1006 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &7521510091458286424 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8148098001997981085} + - component: {fileID: 4216493873191797517} + - component: {fileID: 1879947414287806692} + - component: {fileID: 2655394652004014560} + - component: {fileID: 6215490754924617493} + m_Layer: 16 + m_Name: RoomNameEditButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8148098001997981085 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7521510091458286424} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.619, y: 0.504, z: -0.042} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4216493873191797517 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7521510091458286424} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &1879947414287806692 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7521510091458286424} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &2655394652004014560 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7521510091458286424} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.1, z: 0.1} + m_Center: {x: -0.000000074505806, y: 0.000000022351742, z: 0} +--- !u!114 &6215490754924617493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7521510091458286424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78a8d7209bbdc546979b549a875d550, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 294637073212186624 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 0141ac6bf9f578f4e95706cdd2117914, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 1005 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 1 + m_LinkedUIObject: {fileID: 0} + m_CommandIgnored: 0 + references: + version: 2 + RefIds: [] +--- !u!1 &7868523408258216887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5239577752120043582} + - component: {fileID: 8722975735802607274} + - component: {fileID: 6437857310660163665} + m_Layer: 16 + m_Name: AlertsErrors + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5239577752120043582 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7868523408258216887} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8346410928580794432} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.088, y: 0.614} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8722975735802607274 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7868523408258216887} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6437857310660163665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7868523408258216887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Alerts + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190335 + m_fontColor: {r: 1, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -1.0333014, z: -0.1872099, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8722975735802607274} + m_maskType: 0 +--- !u!1 &8016613551395990211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1616599776894361023} + - component: {fileID: 9202472902960767262} + - component: {fileID: 6387985900290305946} + m_Layer: 16 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1616599776894361023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8016613551395990211} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2965947989537662772} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.14099984} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &9202472902960767262 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8016613551395990211} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6387985900290305946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8016613551395990211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: ' Room :' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.7 + m_fontSizeBase: 1.7 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: -0.31141979, y: -0.12023544, z: 0.49373662, w: 1.1764753} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 9202472902960767262} + m_maskType: 0 +--- !u!1 &8600076904461278434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5290855516666066687} + - component: {fileID: 6290074660409098260} + - component: {fileID: 9129926250020437674} + m_Layer: 16 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5290855516666066687 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8600076904461278434} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.057142857} + m_LocalScale: {x: 2.5, y: 2.5, z: 2.8571427} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 977540286295220915} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.56, y: 0.8399991} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6290074660409098260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8600076904461278434} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &9129926250020437674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8600076904461278434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Disconnect + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.4 + m_fontSizeBase: 1.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0.48827845, y: 0.8604479, z: 0.054796636, w: 0.19184232} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6290074660409098260} + m_maskType: 0 +--- !u!1 &8667602655244155954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1954481780995984980} + m_Layer: 16 + m_Name: GeneralSettingsElements + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1954481780995984980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8667602655244155954} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8921512026995007485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3405719730669880946} + m_Layer: 16 + m_Name: RoomSettingsElements + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3405719730669880946 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8921512026995007485} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 415082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &7380239823636675985 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 499980} + m_Modifications: + - target: {fileID: 2206467382688623040, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_Name + value: AlphaTag + objectReference: {fileID: 0} + - target: {fileID: 2206467382688623040, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalScale.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalScale.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.823 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.249 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.92387956 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.38268343 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: -45 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_ConstrainProportionsScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6612620938781836974, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: managedReferences[3215294302546034781].m_Localized.m_TableEntryReference.m_KeyId + value: 176097607781543936 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2538d4a3972b37c4c9e8649481dd9a2b, type: 3} +--- !u!4 &6533003833265780531 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + m_PrefabInstance: {fileID: 7380239823636675985} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Panels/MultiplayerPanel.prefab.meta b/Assets/Prefabs/Panels/MultiplayerPanel.prefab.meta new file mode 100644 index 0000000000..f5ef283737 --- /dev/null +++ b/Assets/Prefabs/Panels/MultiplayerPanel.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5a442232cda8d79489436e6d45958790 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/PopUps/GDriveSync/DisabledElements.prefab b/Assets/Prefabs/PopUps/GDriveSync/DisabledElements.prefab index cf9219e504..f420f8cd55 100644 --- a/Assets/Prefabs/PopUps/GDriveSync/DisabledElements.prefab +++ b/Assets/Prefabs/PopUps/GDriveSync/DisabledElements.prefab @@ -166,89 +166,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &437988600671713722 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5183940061544528065} - - component: {fileID: 4225421745048100917} - - component: {fileID: 8734623784063967320} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5183940061544528065 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 437988600671713722} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.002} - m_LocalScale: {x: 10, y: 6, z: 6} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4937758326570016829} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &4225421745048100917 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 437988600671713722} - m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} ---- !u!23 &8734623784063967320 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 437988600671713722} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 28d0bd4d20e3f8143994275754956c5e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &461309234141555871 GameObject: m_ObjectHideFlags: 0 @@ -497,7 +414,7 @@ Transform: - {fileID: 60557364801231681} - {fileID: 3310547944333858703} - {fileID: 1038922574623870723} - - {fileID: 4937758326570016829} + - {fileID: 5342878369760894836} m_Father: {fileID: 7092514869646762003} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -642,123 +559,6 @@ BoxCollider: serializedVersion: 2 m_Size: {x: 1.3, y: 0.3, z: 0.01} m_Center: {x: 0, y: 0, z: -0.01} ---- !u!1 &3221966458938766337 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4937758326570016829} - m_Layer: 0 - m_Name: BetaTag - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4937758326570016829 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3221966458938766337} - m_LocalRotation: {x: -0, y: -0, z: 0.3746118, w: 0.9271818} - m_LocalPosition: {x: 0.55, y: -0.03399992, z: -0.013999999} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4946005680407247088} - - {fileID: 5183940061544528065} - - {fileID: 7329579163772372070} - m_Father: {fileID: 7446882484427533872} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 44.001003} ---- !u!1 &4452402264514060099 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7329579163772372070} - - component: {fileID: 3004005737530521341} - - component: {fileID: 2292147869231861182} - m_Layer: 16 - m_Name: Border - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7329579163772372070 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4452402264514060099} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.004} - m_LocalScale: {x: 10.75, y: 10.75, z: 7} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4937758326570016829} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3004005737530521341 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4452402264514060099} - m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} ---- !u!23 &2292147869231861182 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4452402264514060099} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &5108924410514366489 GameObject: m_ObjectHideFlags: 0 @@ -793,219 +593,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5700003095927352931 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4946005680407247088} - - component: {fileID: 2655483490364869926} - - component: {fileID: 3656094398338665249} - - component: {fileID: 7356415779420507544} - m_Layer: 0 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4946005680407247088 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5700003095927352931} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4937758326570016829} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 5} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!23 &2655483490364869926 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5700003095927352931} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &3656094398338665249 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5700003095927352931} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: BETA - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 0.79 - m_fontSizeBase: 0.79 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 0 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 2655483490364869926} - m_maskType: 0 ---- !u!114 &7356415779420507544 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5700003095927352931} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} - m_Name: - m_EditorClassIdentifier: - m_TrackedObjects: - - rid: 3215294302546034804 - references: - version: 2 - RefIds: - - rid: 3215294302546034804 - type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, - asm: Unity.Localization} - data: - m_Target: {fileID: 3656094398338665249} - m_TrackedProperties: - items: - - rid: 3215294302546034805 - m_UpdateType: 0 - - rid: 3215294302546034805 - type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, - asm: Unity.Localization} - data: - m_Localized: - m_TableReference: - m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 - m_TableEntryReference: - m_KeyId: 76121021711179776 - m_Key: - m_FallbackState: 0 - m_WaitForCompletion: 0 - m_LocalVariables: [] - m_PropertyPath: m_text --- !u!1 &8618323702079337633 GameObject: m_ObjectHideFlags: 0 @@ -1434,3 +1021,78 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_PropertyPath: m_text +--- !u!1001 &8568013399981233622 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7446882484427533872} + m_Modifications: + - target: {fileID: 2206467382688623040, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_Name + value: BetaTag + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.55 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.03399992 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.013999999 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9271818 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.3746118 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2538d4a3972b37c4c9e8649481dd9a2b, type: 3} +--- !u!4 &5342878369760894836 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + m_PrefabInstance: {fileID: 8568013399981233622} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/PopUps/GDriveSync/EnabledElements.prefab b/Assets/Prefabs/PopUps/GDriveSync/EnabledElements.prefab index 014438560f..d39c2550ac 100644 --- a/Assets/Prefabs/PopUps/GDriveSync/EnabledElements.prefab +++ b/Assets/Prefabs/PopUps/GDriveSync/EnabledElements.prefab @@ -2933,123 +2933,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6604792200441248002 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7058727754757553705} - - component: {fileID: 3219758793499752604} - - component: {fileID: 3799314549064326537} - m_Layer: 16 - m_Name: Border - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7058727754757553705 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6604792200441248002} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.004} - m_LocalScale: {x: 10.75, y: 10.75, z: 7} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4940275707197938618} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3219758793499752604 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6604792200441248002} - m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} ---- !u!23 &3799314549064326537 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6604792200441248002} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7409430375216068824 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4940275707197938618} - m_Layer: 0 - m_Name: BetaTag - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4940275707197938618 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7409430375216068824} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.721, y: 0.481, z: -0.02} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2228202418004579312} - - {fileID: 659782219572039149} - - {fileID: 7058727754757553705} - m_Father: {fileID: 8058103854604790177} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &7465046787535995228 GameObject: m_ObjectHideFlags: 0 @@ -3748,219 +3631,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8daae932e00bdb749b4f667b08f50ca8, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &8279748072826843855 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2228202418004579312} - - component: {fileID: 9069504756444048404} - - component: {fileID: 6572034308306940565} - - component: {fileID: 2560815885350393782} - m_Layer: 0 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2228202418004579312 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8279748072826843855} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4940275707197938618} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 5} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!23 &9069504756444048404 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8279748072826843855} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &6572034308306940565 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8279748072826843855} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: BETA - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 0.79 - m_fontSizeBase: 0.79 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 0 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 9069504756444048404} - m_maskType: 0 ---- !u!114 &2560815885350393782 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8279748072826843855} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} - m_Name: - m_EditorClassIdentifier: - m_TrackedObjects: - - rid: 3215294302546034780 - references: - version: 2 - RefIds: - - rid: 3215294302546034780 - type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, - asm: Unity.Localization} - data: - m_Target: {fileID: 6572034308306940565} - m_TrackedProperties: - items: - - rid: 3215294302546034781 - m_UpdateType: 0 - - rid: 3215294302546034781 - type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, - asm: Unity.Localization} - data: - m_Localized: - m_TableReference: - m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 - m_TableEntryReference: - m_KeyId: 76121021711179776 - m_Key: - m_FallbackState: 0 - m_WaitForCompletion: 0 - m_LocalVariables: [] - m_PropertyPath: m_text --- !u!1 &8383965637925172465 GameObject: m_ObjectHideFlags: 0 @@ -4690,86 +4360,78 @@ MonoBehaviour: m_WaitForCompletion: 0 m_LocalVariables: [] m_PropertyPath: m_text ---- !u!1 &9122383556718042707 -GameObject: +--- !u!1001 &8668698999585902872 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 659782219572039149} - - component: {fileID: 6431897053494340357} - - component: {fileID: 2075706908915906316} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &659782219572039149 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8058103854604790177} + m_Modifications: + - target: {fileID: 2206467382688623040, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_Name + value: BetaTag + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.721 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.481 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2538d4a3972b37c4c9e8649481dd9a2b, type: 3} +--- !u!4 &4940275707197938618 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9122383556718042707} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.0041000843, z: 0.002} - m_LocalScale: {x: 10, y: 6, z: 6} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4940275707197938618} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6431897053494340357 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 4378067676344109730, guid: 2538d4a3972b37c4c9e8649481dd9a2b, + type: 3} + m_PrefabInstance: {fileID: 8668698999585902872} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9122383556718042707} - m_Mesh: {fileID: 4300002, guid: 3efe5b86b55995545a231ce66a53b402, type: 3} ---- !u!23 &2075706908915906316 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9122383556718042707} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 28d0bd4d20e3f8143994275754956c5e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Prefabs/PopUps/PopUpWindow_Keyboard.prefab b/Assets/Prefabs/PopUps/PopUpWindow_Keyboard.prefab index 64a0e8461e..03e12c60cd 100644 --- a/Assets/Prefabs/PopUps/PopUpWindow_Keyboard.prefab +++ b/Assets/Prefabs/PopUps/PopUpWindow_Keyboard.prefab @@ -27,6 +27,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 293902843205586148} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1.251, y: -0.752, z: -0.018} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} @@ -35,7 +36,6 @@ Transform: - {fileID: 1534559809702098178} - {fileID: 1332166645596930261} m_Father: {fileID: 8645625735778197046} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &6720148685990472896 MeshFilter: @@ -95,9 +95,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 293902843205586148} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: -0.01} --- !u!114 &5466685659915710089 @@ -178,13 +186,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2617002625324559686} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.65, y: 0.65, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 334991469541287722} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1778020965354640619 MeshFilter: @@ -236,6 +244,176 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4765895928551080905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1914744345865055709} + - component: {fileID: 2805378110410830168} + - component: {fileID: 3270546546881808181} + - component: {fileID: 5754635738034065764} + - component: {fileID: 8804208351212219551} + m_Layer: 16 + m_Name: Button_ClearText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1914744345865055709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4765895928551080905} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.023, y: 0.565, z: -0.018} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8645625735778197046} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2805378110410830168 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4765895928551080905} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3270546546881808181 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4765895928551080905} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3c8ca511828182747a0b79564892ec57, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &5754635738034065764 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4765895928551080905} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.0000001, y: 1, z: 0.01} + m_Center: {x: 0, y: 0, z: -0.01} +--- !u!114 &8804208351212219551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4765895928551080905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 07f172f1096366841bb9362060bb0095, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 307216698459103232 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 567e825788c120d499fb56ab4ce674f1, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Action: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 6543094775333332137} + m_TargetAssemblyTypeName: TiltBrush.KeyboardUI, Assembly-CSharp + m_MethodName: Clear + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + references: + version: 2 + RefIds: [] --- !u!1 &6530336952169636648 GameObject: m_ObjectHideFlags: 0 @@ -261,13 +439,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6530336952169636648} + serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0.025} m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 334991469541287722} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} --- !u!33 &6179665678031837250 MeshFilter: @@ -344,13 +522,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587409793350} + serializedVersion: 2 m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8645625735778197046} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &8610995081492312010 MeshFilter: @@ -428,6 +606,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587479430734} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} @@ -435,7 +614,6 @@ Transform: m_Children: - {fileID: 8645625735778197046} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3095268576859284452 MonoBehaviour: @@ -479,9 +657,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587479430734} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 2.5, y: 1.5, z: 0.01} m_Center: {x: 0, y: 0, z: -0.01} --- !u!114 &8533537593755566908 @@ -519,6 +705,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587709734578} + serializedVersion: 2 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} @@ -528,8 +715,8 @@ Transform: - {fileID: 8645625740661137770} - {fileID: 6360790635351249531} - {fileID: 334991469541287722} + - {fileID: 1914744345865055709} m_Father: {fileID: 8645625734765961102} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8644332588524666284 GameObject: @@ -556,13 +743,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332588524666284} + serializedVersion: 2 m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8645625735778197046} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &8610995081988753086 MeshFilter: @@ -619,12 +806,23 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8645625735778197046} m_Modifications: - target: {fileID: 1934243545717122, guid: ef7eb6dda2db50c4bbf6c682e4a21736, type: 3} propertyPath: m_Name value: Keyboard objectReference: {fileID: 0} + - target: {fileID: 199519161696781973, guid: ef7eb6dda2db50c4bbf6c682e4a21736, + type: 3} + propertyPath: m_SizeDelta.x + value: 2200 + objectReference: {fileID: 0} + - target: {fileID: 199519161696781973, guid: ef7eb6dda2db50c4bbf6c682e4a21736, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -192 + objectReference: {fileID: 0} - target: {fileID: 224560323429904302, guid: ef7eb6dda2db50c4bbf6c682e4a21736, type: 3} propertyPath: m_Pivot.x @@ -730,7 +928,15 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 8210763275035622327, guid: ef7eb6dda2db50c4bbf6c682e4a21736, + type: 3} + propertyPath: m_FontData.m_HorizontalOverflow + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ef7eb6dda2db50c4bbf6c682e4a21736, type: 3} --- !u!224 &6360790635351249531 stripped RectTransform: @@ -738,3 +944,15 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 6583098329881755093} m_PrefabAsset: {fileID: 0} +--- !u!114 &6543094775333332137 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114387715371604348, guid: ef7eb6dda2db50c4bbf6c682e4a21736, + type: 3} + m_PrefabInstance: {fileID: 6583098329881755093} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85e65ed8ff0832245869f1b6941e9eb1, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/PopUps/PopUpWindow_NumericKeyboard.prefab b/Assets/Prefabs/PopUps/PopUpWindow_NumericKeyboard.prefab index 81d84db7e4..97d03a4b77 100644 --- a/Assets/Prefabs/PopUps/PopUpWindow_NumericKeyboard.prefab +++ b/Assets/Prefabs/PopUps/PopUpWindow_NumericKeyboard.prefab @@ -27,6 +27,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 293902843205586148} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.672, y: -0.291, z: -0.018} m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} @@ -35,7 +36,6 @@ Transform: - {fileID: 1534559809702098178} - {fileID: 1332166645596930261} m_Father: {fileID: 8645625735778197046} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &6720148685990472896 MeshFilter: @@ -95,9 +95,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 293902843205586148} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1.0000001, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: -0.01} --- !u!114 &5466685659915710089 @@ -178,13 +186,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2617002625324559686} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.65, y: 0.65, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 334991469541287722} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1778020965354640619 MeshFilter: @@ -261,13 +269,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6530336952169636648} + serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0.025} m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 334991469541287722} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} --- !u!33 &6179665678031837250 MeshFilter: @@ -344,13 +352,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587409793350} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -1.084, y: 0.21799995, z: 0} m_LocalScale: {x: 42.020817, y: 61.109, z: 55.761967} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8645625735778197046} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90} --- !u!33 &8610995081492312010 MeshFilter: @@ -428,6 +436,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587479430734} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} @@ -435,7 +444,6 @@ Transform: m_Children: - {fileID: 8645625735778197046} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3095268576859284452 MonoBehaviour: @@ -479,11 +487,19 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587479430734} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2.5, y: 1.5, z: 0.01} - m_Center: {x: 0, y: 0, z: -0.01} + serializedVersion: 3 + m_Size: {x: 1.1, y: 1.3, z: 0} + m_Center: {x: -1.1, y: 0.2, z: 0} --- !u!114 &8533537593755566908 MonoBehaviour: m_ObjectHideFlags: 0 @@ -519,6 +535,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332587709734578} + serializedVersion: 2 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} @@ -529,7 +546,6 @@ Transform: - {fileID: 4947855712410042213} - {fileID: 334991469541287722} m_Father: {fileID: 8645625734765961102} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8644332588524666284 GameObject: @@ -556,13 +572,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8644332588524666284} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -1.084, y: 0.218, z: 0} m_LocalScale: {x: 42.020817, y: 61.109, z: 55.761967} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8645625735778197046} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90} --- !u!33 &8610995081988753086 MeshFilter: @@ -619,6 +635,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8645625735778197046} m_Modifications: - target: {fileID: 1934243545717122, guid: 8f1667dadbe5d554b83228c3a246c49f, type: 3} @@ -751,6 +768,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 8f1667dadbe5d554b83228c3a246c49f, type: 3} --- !u!224 &4947855712410042213 stripped RectTransform: diff --git a/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab b/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab new file mode 100644 index 0000000000..038cfa161e --- /dev/null +++ b/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab @@ -0,0 +1,597 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2652504797212982477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8862736451656621753} + m_Layer: 16 + m_Name: BackgroundMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8862736451656621753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2652504797212982477} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5597448937484054268} + - {fileID: 6595699621784020893} + m_Father: {fileID: 6918750040410781998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4462233062032953290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5938522692040871171} + m_Layer: 16 + m_Name: Foreground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5938522692040871171 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4462233062032953290} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.147, z: -0.049} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5863778336799380782} + - {fileID: 7513470686747838780} + m_Father: {fileID: 6918750040410781998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5389001181572028869 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5597448937484054268} + - component: {fileID: 7633643865989961388} + - component: {fileID: 191522133314116346} + m_Layer: 16 + m_Name: PopupBg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5597448937484054268 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389001181572028869} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8862736451656621753} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7633643865989961388 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389001181572028869} + m_Mesh: {fileID: 4300004, guid: 13b025046bc7e8549a5e8a4b5b416f65, type: 3} +--- !u!23 &191522133314116346 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389001181572028869} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &7548996660066679482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5863778336799380782} + - component: {fileID: 1539577259540886247} + - component: {fileID: 1773628967189394366} + - component: {fileID: 8099100206524301147} + m_Layer: 16 + m_Name: TextLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5863778336799380782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7548996660066679482} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5938522692040871171} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.723125, y: 0.47999996} + m_SizeDelta: {x: 1.5, y: 0.25} + m_Pivot: {x: 0, y: 1} +--- !u!23 &1539577259540886247 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7548996660066679482} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1773628967189394366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7548996660066679482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Sketch Synching... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.915 + m_fontSizeBase: 1.915 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1539577259540886247} + m_maskType: 0 +--- !u!114 &8099100206524301147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7548996660066679482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 3215294302546034690 + references: + version: 2 + RefIds: + - rid: 3215294302546034690 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 1773628967189394366} + m_TrackedProperties: + items: + - rid: 3215294302546034691 + m_UpdateType: 0 + - rid: 3215294302546034691 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 76036335840321536 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text +--- !u!1 &7637706609544861618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6918750040410781998} + - component: {fileID: 3290215492046785806} + - component: {fileID: 512701638737710248} + m_Layer: 16 + m_Name: PopUpWindow_WaitOnSync + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6918750040410781998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7637706609544861618} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.967, y: 0.871, z: -0.227} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5938522692040871171} + - {fileID: 8862736451656621753} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &3290215492046785806 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7637706609544861618} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1.8, y: 1.2, z: 0.025} + m_Center: {x: 0, y: 0, z: -0.01} +--- !u!114 &512701638737710248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7637706609544861618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7769116428690201533 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7513470686747838780} + - component: {fileID: 8199552546709320430} + - component: {fileID: 6802880386612899571} + m_Layer: 16 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7513470686747838780 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7769116428690201533} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.05699998, z: 0} + m_LocalScale: {x: 1.3392899, y: 0.05952, z: 0.0029799999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5938522692040871171} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8199552546709320430 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7769116428690201533} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6802880386612899571 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7769116428690201533} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 4a0eeebe9bd8bbd43adbe477b3bbb6e1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8862480506093304917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6595699621784020893} + - component: {fileID: 6713759721725640257} + - component: {fileID: 5066816512544986141} + m_Layer: 16 + m_Name: PopupBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6595699621784020893 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8862480506093304917} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8862736451656621753} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6713759721725640257 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8862480506093304917} + m_Mesh: {fileID: 4300002, guid: 13b025046bc7e8549a5e8a4b5b416f65, type: 3} +--- !u!23 &5066816512544986141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8862480506093304917} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab.meta b/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab.meta new file mode 100644 index 0000000000..ad88667293 --- /dev/null +++ b/Assets/Prefabs/PopUps/PopUpWindow_WaitOnSync.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 393a05ee4f380ac4d8d049e2242356c8 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Environments/Passthrough/Passthrough.asset b/Assets/Resources/Environments/Passthrough/Passthrough.asset index 3e70c8f39b..d44d6a7ace 100644 --- a/Assets/Resources/Environments/Passthrough/Passthrough.asset +++ b/Assets/Resources/Environments/Passthrough/Passthrough.asset @@ -14,7 +14,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_Guid: m_storage: e38af599-4575-46ff-a040-459703dbcd36 - m_Description: ENVIRONMENT_PASSTHROUGH m_EnvironmentDescription: m_TableReference: m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 @@ -63,6 +62,7 @@ MonoBehaviour: m_WidgetHome: {x: 0, y: 0, z: 0} m_SkyboxColorA: {r: 0, g: 0, b: 0, a: 0} m_SkyboxColorB: {r: 0, g: 0, b: 0, a: 0} + isPassthrough: 1 references: version: 2 RefIds: [] diff --git a/Assets/Resources/Icons/connect.png b/Assets/Resources/Icons/connect.png new file mode 100644 index 0000000000000000000000000000000000000000..e1958af94d0ead51c6b5a98cc5d5773fe0ef3260 GIT binary patch literal 2841 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 TMO7Q=<_d6ffS;?d_fPs8Sqp!j literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/connect.png.meta b/Assets/Resources/Icons/connect.png.meta new file mode 100644 index 0000000000..8dd4bd72be --- /dev/null +++ b/Assets/Resources/Icons/connect.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 366faf1780512c44b84568938fb37aaa +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Icons/disconnect.png b/Assets/Resources/Icons/disconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..70a31a1427773087a76fe4d70a5dc8ed9ba1c31e GIT binary patch literal 3213 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 E0io_ja{vGU literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/disconnect.png.meta b/Assets/Resources/Icons/disconnect.png.meta new file mode 100644 index 0000000000..680e2aa673 --- /dev/null +++ b/Assets/Resources/Icons/disconnect.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 56e5ebeba70465c44bf75491d40b6f3d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Icons/edit.png b/Assets/Resources/Icons/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac63b6a45ac88c3ccb5f44de0b88a58c78c2c65 GIT binary patch literal 2647 zcmb_ec|6qZ79UE)psuWC%U+>Tw!v6NG1Fj-C6P4D#A`Pyd(sS9ZiAW0UW^oF8d0_( zdadt_EZK`o4Ui4}N)RY^tyk~g*oY!@?h-=qlumn6PCML$R(aqHJsN@BlrabMVkhMhK6UF;5|baY<~?DU9$M;b$`!TP<75|;_hsi-^MFBd`|e$6<;u^Jl^?HXYL-)15=PA@el+k)z9u?b_bBY@ zf$}Qbx0FGB#5!TT&7~BhGKP&J+OrI-dlG$sCab%TBTf^-i%8ue5)1S5^IPi-xQeH$ zYJsn{x;iT`FfckIB0{j@Wp6|(QczVLY-wrvx1m5F*!cdblieO7#6A@Kac6rIe{MJb z&K+S`{92G;HrC6CWMT?|xO!5bR8){QH#e!f<3x)3t6B&0vE2Jxrn0iKmTGFZw-i(; zV7lb;M2)KT4L*(Gzf#3yejcfG(XoCgstFG|v-xvnkV>WEMIJnAXviBZHqG8@3eN-6 z?;SgR736|Iw(>*+b)hGYLjFxTP=phgXq*;;C7z&)7}iJR;9?xv+tN_(9E=oF%; z^yk9D!n)v|p${K88X6kx!G#0tLnpos(cy8<&SXYG?e&{C1^vaQ)Y1tYu(9+4+Zh`k z&Sd17rw6{ixiaH)>z0fbys8QYgIQWz`+0H_rBo~(XQZf_@T#&$=kF0LJ^0~d6)WV7 ziVUz+FxQ*C(B0i#2m7`#-5gEsB|M$FR)!OkB@9;}wtjq_s55z}VP*9oAucYr@tqog z$em|Xx3;0GMmVuJAITgrU3j1XLTpd?={(*AO?Nnsg34S-8{!TW8D}ML ze77C%jJLeCHMzP^^~ThunxdVAMegXsI=a--k1l4qFJAUTfJN3r*u=F#vA>$17m1t>-`r3>3Cl!;jtEG`6Pn_nHcJJcE ztiB99un6-V^-G6ObFH=N436rLXh&L(OGT|rHD+Iyurng5dI&62B86j62=h2W#k9$GQ^HT?8J$;u9AeqJj=l^W1-v4);T=J&CNH?LrBq1M%gS_e=o*g$Gy#4P9e zNLELO9qig$1%fXacwrLWNyyB?^u~9`ApZNC4GtjFh7jE}+F+@5AE3%$oH}#2cH2PF zP6s#*pU^^xb4;I}9@hqm!)Z2ai#w(@cuoLvS*+^J>3(qvJxn%2?~1#- z=ANO&Z-(Bl(l5)TYQlY>*pB@>+-`~Hq+e(^x6XyPg>YtuKZU*w0C6~+`Sr!lV$+CN z8ygVd6`9sR;Ez6SEibnVFNIkq@09En-H`GsT+q?Lfs&^@8V#tW7AmV{vq9Q5^4XEpS=s( zGs_K)ev@bDHxL{gj4L6hMZ&7k`ay>=G#du+~rv#;_ zh*Mr(?&afCjJgfN*DG*sIC=U$UV(v?s5gdyM>VMmO>J$cR7JWqaaR;y4+0d{m#5yZ z&h_GjbROSJyLx1qcmIS;$BcWYk{EtIUPEMgb&i$qF z=RQV4Rw;GyxBWyhDzHRdnW3X-Pg6G!k8S|8Co?k>Cmb)q;h#rdxS*_43FH|kTq1qW+i-K) zd;G(P6EZ{cXiusm66p_tK+JOd)pV;5rc>QoZZ3DE93d|Lbn{_WDRAWE<#lSN@5XxZ z`D4`rafOVqKJg{dHc1fY_TM%Q|EKLWv#-G%nqKIqj#Pm-D0*XKRU_g1$CTFc#af1c zPY@EB*(&_zSolmUyQ8y{CoB0s1ZMS+CHV8t0HE~eT?7@teSMV^)|U!f%YRR36vn@4 l6#8#1(chfzNJ{N4Xj#-mo6~@r1NuG?;+(TR)9&h>zW_Ww-7o+E literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/edit.png.meta b/Assets/Resources/Icons/edit.png.meta new file mode 100644 index 0000000000..a6e5151319 --- /dev/null +++ b/Assets/Resources/Icons/edit.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 0141ac6bf9f578f4e95706cdd2117914 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Icons/enter.png b/Assets/Resources/Icons/enter.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f0b8a4b143a11aa8b9eb1ae4b5cfe35cbe50ed GIT binary patch literal 1537 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 At^fc4 literal 0 HcmV?d00001 diff --git a/Assets/Resources/Icons/multiplayer.png.meta b/Assets/Resources/Icons/multiplayer.png.meta new file mode 100644 index 0000000000..3a62b8aaab --- /dev/null +++ b/Assets/Resources/Icons/multiplayer.png.meta @@ -0,0 +1,171 @@ +fileFormatVersion: 2 +guid: a33145647a3f52648829afbd03b5fa9b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Multiplayer/Photon/PhotonPlayerRig.prefab b/Assets/Resources/Multiplayer/Photon/PhotonPlayerRig.prefab index 524ebbe795..9c60844319 100644 --- a/Assets/Resources/Multiplayer/Photon/PhotonPlayerRig.prefab +++ b/Assets/Resources/Multiplayer/Photon/PhotonPlayerRig.prefab @@ -9,8 +9,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6718544642020818535} - - component: {fileID: 7533779467632377196} - - component: {fileID: 6752862290110515822} + - component: {fileID: 7215016235458371273} + - component: {fileID: 2967658244113361874} m_Layer: 0 m_Name: PhotonPlayerRig m_TagString: Untagged @@ -25,66 +25,1974 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 303516855785969295} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5041384770245166357} + - {fileID: 2164438665615948153} + - {fileID: 5267290339349674983} + - {fileID: 1457871284126546349} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7215016235458371273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303516855785969295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f250b0d6a1df335439813ad43ce3dbdb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PlayArea: {fileID: 1840530316396516229} + m_PlayerHead: {fileID: 2866855712475842972} + m_Left: {fileID: 6993845821128094923} + m_Right: {fileID: 1621605232836574636} + m_Tool: {fileID: 4282572128721117942} + _oculusPlayerId: 0 + _IsRoomOwner: 0 + _SceneScale: 0 + _isReceivingVoiceTransmission: 0 + _Nickname: + headTransform: {fileID: 5041384770245166357} + rightHandTransform: {fileID: 5267290339349674983} + leftHandTransform: {fileID: 2164438665615948153} + HMDMeshRenderer: {fileID: 7120707258077581555} + NicknameText: {fileID: 4731291393105903535} + m_PlayerId: 0 + m_LeftControllerModel: {fileID: 4048656607324710010} + m_RightControllerModel: {fileID: 2292257892099998613} +--- !u!114 &2967658244113361874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303516855785969295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SortKey: 2839312778 + ObjectInterest: 1 + Flags: 264449 + NestedObjects: [] + NetworkedBehaviours: + - {fileID: 7215016235458371273} + - {fileID: 1840530316396516229} + - {fileID: 2866855712475842972} + - {fileID: 6993845821128094923} + - {fileID: 1621605232836574636} + - {fileID: 4282572128721117942} +--- !u!1 &459460118330075700 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6539275587195953435} + - component: {fileID: 1840530316396516229} + m_Layer: 0 + m_Name: Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6539275587195953435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459460118330075700} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3005319065403690882} + m_Father: {fileID: 1457871284126546349} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1840530316396516229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459460118330075700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SyncScale: 0 + SyncParent: 0 + _autoAOIOverride: 1 + DisableSharedModeInterpolation: 0 +--- !u!1 &1184365666732702344 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7668165333132264083} + - component: {fileID: 1621605232836574636} + m_Layer: 0 + m_Name: RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7668165333132264083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1184365666732702344} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4501806461527917157} + m_Father: {fileID: 1457871284126546349} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1621605232836574636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1184365666732702344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SyncScale: 0 + SyncParent: 0 + _autoAOIOverride: 1 + DisableSharedModeInterpolation: 0 +--- !u!1 &2181518286534520838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2439271445520760248} + m_Layer: 0 + m_Name: DummyTool + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2439271445520760248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2181518286534520838} + serializedVersion: 2 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5041384770245166357} - - {fileID: 1457871284126546349} - m_Father: {fileID: 0} - m_RootOrder: 0 + m_Children: [] + m_Father: {fileID: 8617970912018780043} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2292257892099998613 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907573} + - component: {fileID: 2292257892107399219} + m_Layer: 0 + m_Name: quest_controller_R + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907573 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998613} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2292257892099907457} + - {fileID: 2292257892099907461} + - {fileID: 2292257892099907473} + - {fileID: 2292257892099907463} + - {fileID: 2292257892099907467} + - {fileID: 2292257892099907479} + - {fileID: 2292257892099907477} + - {fileID: 2292257892099907483} + - {fileID: 2292257892099907459} + - {fileID: 2292257892099907481} + - {fileID: 2292257892099907487} + - {fileID: 2292257892099907485} + m_Father: {fileID: 5267290339349674983} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &2292257892107399219 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998613} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &2292257892099998625 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907457} + - component: {fileID: 2292257892097007513} + - component: {fileID: 2292257892098006489} + m_Layer: 0 + m_Name: r_A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907457 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998625} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007513 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998625} + m_Mesh: {fileID: 4300054, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006489 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998625} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907459} + - component: {fileID: 2292257892097007515} + - component: {fileID: 2292257892098006491} + m_Layer: 0 + m_Name: r_Stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998627} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007515 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998627} + m_Mesh: {fileID: 4300050, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006491 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998627} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907461} + - component: {fileID: 2292257892097007517} + - component: {fileID: 2292257892098006493} + m_Layer: 0 + m_Name: r_A_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907461 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998629} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007517 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998629} + m_Mesh: {fileID: 4300056, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006493 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998629} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9cf867faf6d814a825b3507c7f61ac, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998631 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907463} + - component: {fileID: 2292257892097007519} + - component: {fileID: 2292257892098006495} + m_Layer: 0 + m_Name: r_B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907463 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998631} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007519 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998631} + m_Mesh: {fileID: 4300052, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006495 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998631} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907467} + - component: {fileID: 2292257892097007491} + - component: {fileID: 2292257892098006467} + m_Layer: 0 + m_Name: r_B_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907467 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998635} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007491 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998635} + m_Mesh: {fileID: 4300058, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006467 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998635} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9cf867faf6d814a825b3507c7f61ac, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907473} + - component: {fileID: 2292257892097007599} + - component: {fileID: 2292257892098006319} + m_Layer: 0 + m_Name: r_A_Slice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998641} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007599 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998641} + m_Mesh: {fileID: 4300038, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006319 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998641} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907477} + - component: {fileID: 2292257892097007507} + - component: {fileID: 2292257892098006483} + m_Layer: 0 + m_Name: r_Controller_Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907477 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998645} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000043711392, y: 1, z: 0.000000081460335, w: -0.000000043711385} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007507 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998645} + m_Mesh: {fileID: 4300046, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006483 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998645} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907479} + - component: {fileID: 2292257892097007597} + - component: {fileID: 2292257892098006317} + m_Layer: 0 + m_Name: r_B_Slice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998647} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007597 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998647} + m_Mesh: {fileID: 4300040, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006317 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998647} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907481} + - component: {fileID: 2292257892097007511} + - component: {fileID: 2292257892098006487} + m_Layer: 0 + m_Name: r_Stick_Slice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998649} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0.0000000018348941, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007511 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998649} + m_Mesh: {fileID: 4300036, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006487 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998649} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907483} + - component: {fileID: 2292257892097007505} + - component: {fileID: 2292257892098006481} + m_Layer: 0 + m_Name: r_Grip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907483 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998651} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000043711385, y: 1, z: 0.000000081460335, w: 0.000000043711392} + m_LocalPosition: {x: 0.0000000045872355, y: 0.000000014900893, z: 0.00000007824109} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007505 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998651} + m_Mesh: {fileID: 4300048, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006481 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998651} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2292257892099998653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907485} + - component: {fileID: 2292257892111503075} + m_Layer: 0 + m_Name: r_Trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907485 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998653} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000043711392, y: 1, z: 0.000000081460335, w: -0.000000043711385} + m_LocalPosition: {x: -1.323489e-23, y: -1.8087828e-23, z: 1.110223e-16} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &2292257892111503075 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998653} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 3 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 1 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300044, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} + m_Bones: [] + m_BlendShapeWeights: [] + m_RootBone: {fileID: 0} + m_AABB: + m_Center: {x: 0, y: -0.022013616, z: -0.0046860487} + m_Extent: {x: 0.013755702, y: 0.012507235, z: 0.01091928} + m_DirtyAABB: 0 +--- !u!1 &2292257892099998655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2292257892099907487} + - component: {fileID: 2292257892097007509} + - component: {fileID: 2292257892098006485} + m_Layer: 0 + m_Name: r_Transform_Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2292257892099907487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998655} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000043711392, y: 1, z: 0.000000081460335, w: -0.000000043711385} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2292257892099907573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2292257892097007509 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998655} + m_Mesh: {fileID: 4300042, guid: f85ad479a7d3ac54d91b088b924de5ae, type: 3} +--- !u!23 &2292257892098006485 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2292257892099998655} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e5104658cc13cef4097a511ebaf6f3aa, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2546328019691961597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1030654070696327489} + - component: {fileID: 2866855712475842972} + m_Layer: 0 + m_Name: Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1030654070696327489 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2546328019691961597} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2514485848220458462} + m_Father: {fileID: 1457871284126546349} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2866855712475842972 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2546328019691961597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SyncScale: 0 + SyncParent: 0 + _autoAOIOverride: 1 + DisableSharedModeInterpolation: 0 +--- !u!1 &2568790808486584579 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5887326793658353859} + - component: {fileID: 6993845821128094923} + m_Layer: 0 + m_Name: LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5887326793658353859 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2568790808486584579} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1310333546402417676} + m_Father: {fileID: 1457871284126546349} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6993845821128094923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2568790808486584579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SyncScale: 0 + SyncParent: 0 + _autoAOIOverride: 1 + DisableSharedModeInterpolation: 0 +--- !u!1 &3333659737751141766 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3005319065403690882} + m_Layer: 0 + m_Name: DummyArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3005319065403690882 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3333659737751141766} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6539275587195953435} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4048656607324709984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141056} + - component: {fileID: 4048656607323846756} + - component: {fileID: 4048656607322716836} + m_Layer: 0 + m_Name: l_Y + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141056 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709984} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846756 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709984} + m_Mesh: {fileID: 4300018, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716836 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709984} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324709988 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141060} + - component: {fileID: 4048656607323846776} + - component: {fileID: 4048656607322716856} + m_Layer: 0 + m_Name: l_Stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141060 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709988} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846776 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709988} + m_Mesh: {fileID: 4300016, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716856 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324709990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141062} + - component: {fileID: 4048656607323846778} + - component: {fileID: 4048656607322716858} + m_Layer: 0 + m_Name: l_X + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141062 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709990} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846778 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709990} + m_Mesh: {fileID: 4300014, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716858 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709990} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324709992 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141064} + - component: {fileID: 4048656607323846764} + - component: {fileID: 4048656607322716844} + m_Layer: 0 + m_Name: l_Y_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141064 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709992} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846764 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709992} + m_Mesh: {fileID: 4300026, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716844 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709992} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9cf867faf6d814a825b3507c7f61ac, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324709998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141070} + - component: {fileID: 4048656607323846754} + - component: {fileID: 4048656607322716834} + m_Layer: 0 + m_Name: l_X_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141070 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709998} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846754 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709998} + m_Mesh: {fileID: 4300024, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716834 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324709998} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7b9cf867faf6d814a825b3507c7f61ac, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141072} + - component: {fileID: 4048656607323846768} + - component: {fileID: 4048656607322716848} + m_Layer: 0 + m_Name: l_Stick_Slice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141072 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710000} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0.0000000018348941, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846768 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710000} + m_Mesh: {fileID: 4300012, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710000} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4048656607325141074} + - component: {fileID: 4048656607323846770} + - component: {fileID: 4048656607322716850} + m_Layer: 0 + m_Name: l_Transform_Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4048656607325141074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710002} + serializedVersion: 2 + m_LocalRotation: {x: -6.1500847e-15, y: -0.000000081460335, z: 1, w: 0.0000000754979} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7533779467632377196 -MonoBehaviour: +--- !u!33 &4048656607323846770 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 303516855785969295} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f250b0d6a1df335439813ad43ce3dbdb, type: 3} - m_Name: - m_EditorClassIdentifier: - _interpolationDataSource: 0 - m_PlayArea: {fileID: 8895232112724846442} - m_PlayerHead: {fileID: 5083753190464579125} - m_Left: {fileID: 6268094594865570998} - m_Right: {fileID: 4999079164026519325} - m_Tool: {fileID: 5771162771103583132} - headTransform: {fileID: 5041384770245166357} - _oculusPlayerId: 0 ---- !u!114 &6752862290110515822 -MonoBehaviour: + m_GameObject: {fileID: 4048656607324710002} + m_Mesh: {fileID: 4300000, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716850 +MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 303516855785969295} + m_GameObject: {fileID: 4048656607324710002} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - ObjectInterest: 1 - DefaultInterestGroups: [] - DestroyWhenStateAuthorityLeaves: 0 - AllowStateAuthorityOverride: 0 - AoiPositionSource: {fileID: 0} - Flags: 2305 - NetworkGuid: - RawGuidValue: 9ee52735aebb6a445b4905c8aba8cfe3 - NestedObjects: [] - NetworkedBehaviours: - - {fileID: 7533779467632377196} - - {fileID: 8895232112724846442} - - {fileID: 5083753190464579125} - - {fileID: 6268094594865570998} - - {fileID: 4999079164026519325} - - {fileID: 5771162771103583132} - SimulationBehaviours: [] ---- !u!1 &459460118330075700 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b52077cdc60e6c9458bea3c463972a79, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710004 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -92,60 +2000,82 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6539275587195953435} - - component: {fileID: 8895232112724846442} + - component: {fileID: 4048656607325141076} + - component: {fileID: 4048656607323846772} + - component: {fileID: 4048656607322716852} m_Layer: 0 - m_Name: Area + m_Name: l_Controller_Body m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6539275587195953435 +--- !u!4 &4048656607325141076 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 459460118330075700} - 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_GameObject: {fileID: 4048656607324710004} + serializedVersion: 2 + m_LocalRotation: {x: -6.1500847e-15, y: -0.000000081460335, z: 1, w: 0.0000000754979} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3005319065403690882} - m_Father: {fileID: 1457871284126546349} - m_RootOrder: 0 + m_Children: [] + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8895232112724846442 -MonoBehaviour: +--- !u!33 &4048656607323846772 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 459460118330075700} + m_GameObject: {fileID: 4048656607324710004} + m_Mesh: {fileID: 4300004, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716852 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710004} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _interpolationDataSource: 0 - InterpolationSpace: 0 - InterpolationTarget: {fileID: 3005319065403690882} - InterpolateErrorCorrection: 1 - InterpolatedErrorCorrectionSettings: - MinRate: 3.3 - MaxRate: 10 - PosBlendStart: 0.25 - PosBlendEnd: 1 - PosMinCorrection: 0.025 - PosTeleportDistance: 2 - RotBlendStart: 0.1 - RotBlendEnd: 0.5 - RotTeleportRadians: 1.5 - UseLegacySharedModeInterpolation: 0 - TargetInterpolationDelay: 0.03 ---- !u!1 &1184365666732702344 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710006 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -153,60 +2083,82 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7668165333132264083} - - component: {fileID: 4999079164026519325} + - component: {fileID: 4048656607325141078} + - component: {fileID: 4048656607323846774} + - component: {fileID: 4048656607322716854} m_Layer: 0 - m_Name: RightHand + m_Name: l_Grip m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &7668165333132264083 +--- !u!4 &4048656607325141078 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184365666732702344} - 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_GameObject: {fileID: 4048656607324710006} + serializedVersion: 2 + m_LocalRotation: {x: -4.141339e-15, y: -0.000000081460335, z: 1, w: 0.0000000754979} + m_LocalPosition: {x: -0.0000000027523415, y: 0.000000014900893, z: 0.00000007824109} + m_LocalScale: {x: -100, y: -100, z: -100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4501806461527917157} - m_Father: {fileID: 1457871284126546349} - m_RootOrder: 3 + m_Children: [] + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4999079164026519325 -MonoBehaviour: +--- !u!33 &4048656607323846774 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184365666732702344} + m_GameObject: {fileID: 4048656607324710006} + m_Mesh: {fileID: 4300002, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710006} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _interpolationDataSource: 0 - InterpolationSpace: 0 - InterpolationTarget: {fileID: 4501806461527917157} - InterpolateErrorCorrection: 1 - InterpolatedErrorCorrectionSettings: - MinRate: 3.3 - MaxRate: 10 - PosBlendStart: 0.25 - PosBlendEnd: 1 - PosMinCorrection: 0.025 - PosTeleportDistance: 2 - RotBlendStart: 0.1 - RotBlendEnd: 0.5 - RotTeleportRadians: 1.5 - UseLegacySharedModeInterpolation: 0 - TargetInterpolationDelay: 0.03 ---- !u!1 &2181518286534520838 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710008 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -214,30 +2166,82 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2439271445520760248} + - component: {fileID: 4048656607325141080} + - component: {fileID: 4048656607323846782} + - component: {fileID: 4048656607322716862} m_Layer: 0 - m_Name: DummyTool + m_Name: l_Y_Slice m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2439271445520760248 +--- !u!4 &4048656607325141080 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2181518286534520838} - 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_GameObject: {fileID: 4048656607324710008} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0.0000000018348941, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8617970912018780043} - m_RootOrder: 0 + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2546328019691961597 +--- !u!33 &4048656607323846782 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710008} + m_Mesh: {fileID: 4300008, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716862 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710008} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4048656607324710010 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -245,60 +2249,64 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1030654070696327489} - - component: {fileID: 5083753190464579125} + - component: {fileID: 4048656607325141082} + - component: {fileID: 4048656607334225844} m_Layer: 0 - m_Name: Head + m_Name: quest_controller_L m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1030654070696327489 +--- !u!4 &4048656607325141082 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2546328019691961597} + m_GameObject: {fileID: 4048656607324710010} + serializedVersion: 2 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_LocalScale: {x: 0.1, y: 0.1, z: 0.1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 2514485848220458462} - m_Father: {fileID: 1457871284126546349} - m_RootOrder: 1 + - {fileID: 4048656607325141076} + - {fileID: 4048656607325141078} + - {fileID: 4048656607325141060} + - {fileID: 4048656607325141072} + - {fileID: 4048656607325141074} + - {fileID: 4048656607325141084} + - {fileID: 4048656607325141062} + - {fileID: 4048656607325141070} + - {fileID: 4048656607325141086} + - {fileID: 4048656607325141056} + - {fileID: 4048656607325141064} + - {fileID: 4048656607325141080} + m_Father: {fileID: 2164438665615948153} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5083753190464579125 -MonoBehaviour: +--- !u!95 &4048656607334225844 +Animator: + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2546328019691961597} + m_GameObject: {fileID: 4048656607324710010} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _interpolationDataSource: 0 - InterpolationSpace: 0 - InterpolationTarget: {fileID: 2514485848220458462} - InterpolateErrorCorrection: 1 - InterpolatedErrorCorrectionSettings: - MinRate: 3.3 - MaxRate: 10 - PosBlendStart: 0.25 - PosBlendEnd: 1 - PosMinCorrection: 0.025 - PosTeleportDistance: 2 - RotBlendStart: 0.1 - RotBlendEnd: 0.5 - RotTeleportRadians: 1.5 - UseLegacySharedModeInterpolation: 0 - TargetInterpolationDelay: 0.03 ---- !u!1 &2568790808486584579 + m_Avatar: {fileID: 9000000, guid: a725a200199f50f45989f92aa2e2c840, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &4048656607324710012 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -306,60 +2314,84 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5887326793658353859} - - component: {fileID: 6268094594865570998} + - component: {fileID: 4048656607325141084} + - component: {fileID: 4048656607338310004} m_Layer: 0 - m_Name: LeftHand + m_Name: l_Trigger m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5887326793658353859 +--- !u!4 &4048656607325141084 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2568790808486584579} - 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_GameObject: {fileID: 4048656607324710012} + serializedVersion: 2 + m_LocalRotation: {x: -6.1500847e-15, y: -0.000000081460335, z: 1, w: 0.0000000754979} + m_LocalPosition: {x: 0.0000000018348941, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1310333546402417676} - m_Father: {fileID: 1457871284126546349} - m_RootOrder: 2 + m_Children: [] + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &6268094594865570998 -MonoBehaviour: +--- !u!137 &4048656607338310004 +SkinnedMeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2568790808486584579} + m_GameObject: {fileID: 4048656607324710012} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _interpolationDataSource: 0 - InterpolationSpace: 0 - InterpolationTarget: {fileID: 1310333546402417676} - InterpolateErrorCorrection: 1 - InterpolatedErrorCorrectionSettings: - MinRate: 3.3 - MaxRate: 10 - PosBlendStart: 0.25 - PosBlendEnd: 1 - PosMinCorrection: 0.025 - PosTeleportDistance: 2 - RotBlendStart: 0.1 - RotBlendEnd: 0.5 - RotTeleportRadians: 1.5 - UseLegacySharedModeInterpolation: 0 - TargetInterpolationDelay: 0.03 ---- !u!1 &3333659737751141766 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 3 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 1 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: a725a200199f50f45989f92aa2e2c840, type: 3} + m_Bones: [] + m_BlendShapeWeights: [] + m_RootBone: {fileID: 0} + m_AABB: + m_Center: {x: 0, y: -0.022013616, z: -0.0046860487} + m_Extent: {x: 0.013755702, y: 0.012507235, z: 0.01091928} + m_DirtyAABB: 0 +--- !u!1 &4048656607324710014 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -367,29 +2399,252 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3005319065403690882} + - component: {fileID: 4048656607325141086} + - component: {fileID: 4048656607323846780} + - component: {fileID: 4048656607322716860} m_Layer: 0 - m_Name: DummyArea + m_Name: l_X_Slice m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3005319065403690882 +--- !u!4 &4048656607325141086 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3333659737751141766} - 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_GameObject: {fileID: 4048656607324710014} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0.0000000018348941, y: 0, z: 0} + m_LocalScale: {x: -100, y: -100, z: -100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 6539275587195953435} - m_RootOrder: 0 + m_Father: {fileID: 4048656607325141082} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4048656607323846780 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710014} + m_Mesh: {fileID: 4300010, guid: a725a200199f50f45989f92aa2e2c840, type: 3} +--- !u!23 &4048656607322716860 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4048656607324710014} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0febb0642a50e644ab2b4f075fe32a9b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4787901167856176139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1111145119338584871} + - component: {fileID: 889561678788871044} + - component: {fileID: 4731291393105903535} + m_Layer: 0 + m_Name: NickNameText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1111145119338584871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4787901167856176139} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5041384770245166357} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.009, y: -0.07} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &889561678788871044 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4787901167856176139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &4731291393105903535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4787901167856176139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Nickname + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36.75 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 24 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: -3.07 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 1 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 1.7013121, y: -0.40430713, z: 1.7602301, w: 1.2983242} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 889561678788871044} + m_maskType: 0 --- !u!1 &5681254972916902966 GameObject: m_ObjectHideFlags: 0 @@ -406,8 +2661,8 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5041384770245166357 -Transform: +--- !u!224 &5041384770245166357 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -419,9 +2674,14 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7120707258077581554} + - {fileID: 1111145119338584871} m_Father: {fileID: 6718544642020818535} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5736389435991655852 GameObject: m_ObjectHideFlags: 0 @@ -445,13 +2705,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5736389435991655852} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5887326793658353859} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &6003437268994292288 GameObject: @@ -476,13 +2736,77 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6003437268994292288} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7668165333132264083} - m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6046791714391239329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267290339349674983} + m_Layer: 0 + m_Name: RightHandTransform + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5267290339349674983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6046791714391239329} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2292257892099907573} + m_Father: {fileID: 6718544642020818535} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7683395605648486609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2164438665615948153} + m_Layer: 0 + m_Name: LeftHandTransform + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2164438665615948153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7683395605648486609} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4048656607325141082} + m_Father: {fileID: 6718544642020818535} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &7803168780329886017 GameObject: @@ -493,7 +2817,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 8617970912018780043} - - component: {fileID: 5771162771103583132} + - component: {fileID: 4282572128721117942} m_Layer: 0 m_Name: Tool m_TagString: Untagged @@ -508,6 +2832,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7803168780329886017} + serializedVersion: 2 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} @@ -515,9 +2840,8 @@ Transform: m_Children: - {fileID: 2439271445520760248} m_Father: {fileID: 1457871284126546349} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5771162771103583132 +--- !u!114 &4282572128721117942 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -529,22 +2853,10 @@ MonoBehaviour: m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} m_Name: m_EditorClassIdentifier: - _interpolationDataSource: 0 - InterpolationSpace: 0 - InterpolationTarget: {fileID: 2439271445520760248} - InterpolateErrorCorrection: 1 - InterpolatedErrorCorrectionSettings: - MinRate: 3.3 - MaxRate: 10 - PosBlendStart: 0.25 - PosBlendEnd: 1 - PosMinCorrection: 0.025 - PosTeleportDistance: 2 - RotBlendStart: 0.1 - RotBlendEnd: 0.5 - RotTeleportRadians: 1.5 - UseLegacySharedModeInterpolation: 0 - TargetInterpolationDelay: 0.03 + SyncScale: 0 + SyncParent: 0 + _autoAOIOverride: 1 + DisableSharedModeInterpolation: 0 --- !u!1 &8601996063017238699 GameObject: m_ObjectHideFlags: 0 @@ -568,6 +2880,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8601996063017238699} + serializedVersion: 2 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} @@ -579,7 +2892,6 @@ Transform: - {fileID: 7668165333132264083} - {fileID: 8617970912018780043} m_Father: {fileID: 6718544642020818535} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8742815544225261104 GameObject: @@ -604,19 +2916,20 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8742815544225261104} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1030654070696327489} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &8559495263563694728 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 5041384770245166357} m_Modifications: - target: {fileID: 1448111865499013753, guid: 834f4ac71ec35d148acacfca28f04405, @@ -624,6 +2937,11 @@ PrefabInstance: propertyPath: m_Name value: HMDMesh objectReference: {fileID: 0} + - target: {fileID: 1448111865499013753, guid: 834f4ac71ec35d148acacfca28f04405, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 1448111865499013754, guid: 834f4ac71ec35d148acacfca28f04405, type: 3} propertyPath: m_RootOrder @@ -695,6 +3013,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 834f4ac71ec35d148acacfca28f04405, type: 3} --- !u!4 &7120707258077581554 stripped Transform: @@ -702,3 +3023,9 @@ Transform: type: 3} m_PrefabInstance: {fileID: 8559495263563694728} m_PrefabAsset: {fileID: 0} +--- !u!23 &7120707258077581555 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 1448111865499013755, guid: 834f4ac71ec35d148acacfca28f04405, + type: 3} + m_PrefabInstance: {fileID: 8559495263563694728} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab b/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab new file mode 100644 index 0000000000..6644b3839e --- /dev/null +++ b/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab @@ -0,0 +1,148 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &9139372413509065517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3083929738384175756} + - component: {fileID: 5056828011079605640} + - component: {fileID: 2878855519606601759} + m_Layer: 0 + m_Name: SpeakerPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3083929738384175756 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9139372413509065517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &5056828011079605640 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9139372413509065517} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &2878855519606601759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9139372413509065517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd7fea91fe63f4e1b884ef1e16a975c3, type: 3} + m_Name: + m_EditorClassIdentifier: + playDelayConfig: + Low: 200 + High: 400 + Max: 1000 + SpeedUpPerc: 5 + restartOnDeviceChange: 1 diff --git a/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab.meta b/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab.meta new file mode 100644 index 0000000000..a41da51989 --- /dev/null +++ b/Assets/Resources/Multiplayer/Photon/SpeakerPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 482e38719c8825849a31f10f4f27c046 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/UnityGLTFSettings.asset b/Assets/Resources/UnityGLTFSettings.asset index b7aaddc95f..643766150c 100644 --- a/Assets/Resources/UnityGLTFSettings.asset +++ b/Assets/Resources/UnityGLTFSettings.asset @@ -32,6 +32,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 056f401eae1a4f76b6f580ebf76127a9, type: 3} m_Name: GPUInstancingImport m_EditorClassIdentifier: +--- !u!114 &-7610138946625775758 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c261146868c45eb4eb6b9987bd8c9084, type: 3} + m_Name: OpenBrushExportPlugin + m_EditorClassIdentifier: --- !u!114 &-7373113640993280472 MonoBehaviour: m_ObjectHideFlags: 3 @@ -63,6 +75,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9571021a85f04ddfb74e8aa5aad9cc5a, type: 3} m_Name: UnlitMaterialsExport m_EditorClassIdentifier: +--- !u!114 &-6092789625841630549 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6843a59b1a844430b7b7c08e8711a6d7, type: 3} + m_Name: OpenBrushLightsImport + m_EditorClassIdentifier: --- !u!114 &-5728475199642485532 MonoBehaviour: m_ObjectHideFlags: 3 @@ -182,7 +206,7 @@ MonoBehaviour: - {fileID: -5020980606651475385} - {fileID: 8372111537548844026} - {fileID: -7716978867629807533} - - {fileID: 6916234453510156686} + - {fileID: -6092789625841630549} ExportPlugins: - {fileID: 242952683485160214} - {fileID: -5728475199642485532} @@ -194,8 +218,7 @@ MonoBehaviour: - {fileID: -7373113640993280472} - {fileID: 7420168740226561727} - {fileID: -6755212205620999988} - - {fileID: 8207833083978872644} - - {fileID: -682178813687408182} + - {fileID: -7610138946625775758} exportNames: 1 exportFullPath: 0 requireExtensions: 0 diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 55c188aed8..54e73264c9 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -38,7 +38,6 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 8900000, guid: 378efb751ea39e14cb1fd93f49ead278, type: 3} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &4 LightmapSettings: @@ -715,7 +714,7 @@ MonoBehaviour: lensDirtScatterFactor: 0.5 lensDirtIntensity: 0.05 lensDirtTexture: {fileID: 0} - inputIsHDR: 1 + inputIsHDR: 0 lowQuality: 1 depthBlending: 0 depthBlendFunction: 0 @@ -3655,7 +3654,7 @@ MonoBehaviour: m_SdkMode: 0 m_AutoProfile: 0 m_AutoProfileWaitTime: 10 - Secrets: {fileID: 11400000, guid: 2f5f8e93c6bc7be49a5023148b50e7a0, type: 2} + Secrets: {fileID: 11400000, guid: 2958d93356c83c5409c5fc930c42e6fc, type: 2} m_SketchFiles: [] DisableAccountLogins: 0 m_OdsNumFrames: 0 @@ -10198,7 +10197,7 @@ MonoBehaviour: m_FadeFromBlackDuration: 3 m_QuickLoadHintDelay: 2 m_GpuIntersector: {fileID: 165291219} - m_Manifest: {fileID: 11400000, guid: 0be87170c871bfc4f91119634daa9c79, type: 2} + m_ManifestStandard: {fileID: 11400000, guid: 0be87170c871bfc4f91119634daa9c79, type: 2} m_ManifestExperimental: {fileID: 11400000, guid: 1121701af0c4d7145af70356f0ac2a83, type: 2} m_ZapboxManifest: {fileID: 11400000, guid: 7be45b23483e18347a0170a596bf2867, type: 2} @@ -15177,6 +15176,9 @@ GameObject: m_Component: - component: {fileID: 1052269831} - component: {fileID: 1052269832} + - component: {fileID: 1052269837} + - component: {fileID: 1052269836} + - component: {fileID: 1052269835} m_Layer: 0 m_Name: MultiplayerManager m_TagString: Untagged @@ -15212,6 +15214,113 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_MultiplayerType: 2 + CurrentRoomName: + data: + roomName: + roomPassword: + private: 0 + maxPlayers: 0 + voiceDisabled: 0 +--- !u!114 &1052269835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052269830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 91175dcc15224463780e01a8a98b1b60, type: 3} + m_Name: + m_EditorClassIdentifier: + voiceDetection: 1 + voiceDetectionThreshold: 0.01 + voiceDetectionDelayMs: 500 + interestGroup: 0 + useTargetPlayers: 0 + targetPlayers: + debugEchoMode: 0 + reliableMode: 0 + encrypt: 0 + transmitEnabled: 1 + samplingRate: 24000 + frameDuration: 20000 + bitrate: 30000 + sourceType: 0 + microphoneType: 0 + audioClip: {fileID: 0} + loopAudioClip: 1 + recordingEnabled: 1 + audioSessionParameters: + Category: 4 + Mode: 1 + CategoryOptions: 0800000004000000 + editorAudioSessionPreset: 1 + androidMicrophoneSettings: + EnableAEC: 1 + EnableAGC: 1 + EnableNS: 1 + stopRecordingWhenPaused: 0 + useOnAudioFilterRead: 0 + useMicrophoneTypeFallback: 1 + recordWhenJoined: 1 +--- !u!114 &1052269836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052269830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 697c1cda529a1419782f2a2e3afe37a2, type: 3} + m_Name: + m_EditorClassIdentifier: + DisconnectAfterKeepAlive: 0 + KeepAliveInBackground: 60000 + ApplyDontDestroyOnLoad: 1 + runInBackground: 1 + statsResetInterval: 1000 + speakerPrefab: {fileID: 9139372413509065517, guid: 482e38719c8825849a31f10f4f27c046, + type: 3} + primaryRecorder: {fileID: 1052269835} + usePrimaryRecorder: 0 + cppCompatibilityMode: 0 + Settings: + AppIdRealtime: + AppIdFusion: + AppIdChat: + AppIdVoice: + AppVersion: + UseNameServer: 1 + FixedRegion: + Server: + Port: 0 + ProxyServer: + Protocol: 0 + EnableProtocolFallback: 1 + AuthMode: 0 + EnableLobbyStatistics: 0 + NetworkLogging: 1 + ShowSettings: 0 + UseVoiceAppSettings: 0 +--- !u!114 &1052269837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1052269830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a751437a9d2b2724584655aaead0ddfe, type: 3} + m_Name: + m_EditorClassIdentifier: + batchSize: 60 + delayBetweenBatches: 0.05 + m_SyncType: 0 + numberOfCommandsExpected: 0 + numberOfCommandsSent: 0 --- !u!1 &1057179852 GameObject: m_ObjectHideFlags: 0 @@ -29156,6 +29265,37 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1726887557} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1728487473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1728487474} + m_Layer: 0 + m_Name: RegionHandler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1728487474 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728487473} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1731474005 GameObject: m_ObjectHideFlags: 0 @@ -30326,6 +30466,12 @@ MonoBehaviour: m_ModeQuest: 0 m_Basic: 0 m_Advanced: 0 + - m_PanelPrefab: {fileID: 160214, guid: 5a442232cda8d79489436e6d45958790, type: 3} + m_ModeVr: 1 + m_ModeMono: 1 + m_ModeQuest: 1 + m_Basic: 1 + m_Advanced: 1 - m_PanelPrefab: {fileID: 1272310558547734, guid: 38a4b95a5f6824c41994709bfbd012ad, type: 3} m_ModeVr: 1 @@ -33617,7 +33763,7 @@ MonoBehaviour: lensDirtScatterFactor: 0.5 lensDirtIntensity: 0.05 lensDirtTexture: {fileID: 0} - inputIsHDR: 1 + inputIsHDR: 0 lowQuality: 1 depthBlending: 0 depthBlendFunction: 0 @@ -34417,6 +34563,51 @@ MeshRenderer: type: 3} m_PrefabInstance: {fileID: 2052658242} m_PrefabAsset: {fileID: 0} +--- !u!1 &2066419199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066419201} + - component: {fileID: 2066419200} + m_Layer: 0 + m_Name: VoiceLogger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2066419200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066419199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a86f533fd9917dd4da8601e9eb542c96, type: 3} + m_Name: + m_EditorClassIdentifier: + LogLevel: 4 +--- !u!4 &2066419201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066419199} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2073328682 GameObject: m_ObjectHideFlags: 0 @@ -34520,7 +34711,7 @@ MonoBehaviour: lensDirtScatterFactor: 0.5 lensDirtIntensity: 0.05 lensDirtTexture: {fileID: 0} - inputIsHDR: 1 + inputIsHDR: 0 lowQuality: 1 depthBlending: 0 depthBlendFunction: 0 @@ -36955,3 +37146,5 @@ SceneRoots: - {fileID: 1802399861} - {fileID: 106206546} - {fileID: 1848773840} + - {fileID: 2066419201} + - {fileID: 1728487474} diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index c26e70c583..74eb7f7381 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -23,6 +23,7 @@ using UnityEngine; using Newtonsoft.Json; using TMPro; +using UnityEngine.Serialization; #if USD_SUPPORTED using Unity.Formats.USD; #endif @@ -191,11 +192,22 @@ public static void Log(string msg) [SerializeField] GpuIntersector m_GpuIntersector; - public TiltBrushManifest m_Manifest; - - // Previously Experimental-Mode only + [SerializeField] private TiltBrushManifest m_ManifestStandard; [SerializeField] private TiltBrushManifest m_ManifestExperimental; [SerializeField] private TiltBrushManifest m_ZapboxManifest; + private TiltBrushManifest m_ManifestFull; + + public TiltBrushManifest ManifestFull + { + get + { + if (m_ManifestFull == null) + { + m_ManifestFull = MergeManifests(); + } + return m_ManifestFull; + } + } [SerializeField] private SelectionEffect m_SelectionEffect; @@ -552,8 +564,6 @@ void Awake() gameObject.AddComponent(); } - m_Manifest = GetMergedManifest(); - m_HttpServer = GetComponentInChildren(); if (!Config.IsMobileHardware) { @@ -1195,6 +1205,10 @@ private void StartReset() { PanelManager.m_Instance.ToggleBrushLabPanels(); } + else if (PanelManager.m_Instance.MultiplayerActive()) + { + PanelManager.m_Instance.ToggleMultiplayerPanels(); + } // Hide all panels. SketchControlsScript.m_Instance.RequestPanelsVisibility(false); @@ -2201,19 +2215,16 @@ void OnPlaybackComplete() } } - public TiltBrushManifest GetMergedManifest(bool forceExperimental = false) + private TiltBrushManifest MergeManifests() { - var manifest = m_Manifest; - if (Config.IsExperimental || forceExperimental) +#if ZAPBOX_SUPPORTED + var manifest = m_ZapboxManifest; +#else + var manifest = Instantiate(m_ManifestStandard); + if (m_ManifestExperimental != null) { - if (m_ManifestExperimental != null) - { - manifest = Instantiate(m_Manifest); - manifest.AppendFrom(m_ManifestExperimental); - } + manifest.AppendFrom(m_ManifestExperimental); } -#if ZAPBOX_SUPPORTED - manifest = m_ZapboxManifest; #endif return manifest; } diff --git a/Assets/Scripts/BrushCatalog.cs b/Assets/Scripts/BrushCatalog.cs index 86a44c4a2e..13bdfe354a 100644 --- a/Assets/Scripts/BrushCatalog.cs +++ b/Assets/Scripts/BrushCatalog.cs @@ -189,19 +189,22 @@ public void BeginReload() m_GuiBrushList.Clear(); foreach (var brush in m_GuidToBrush.Values) { - if (brush.m_HiddenInGui) + // Some brushes are hardcoded as hidden + if (brush.m_HiddenInGui) continue; + // Always include if experimental mode is on + if (Config.IsExperimental || !App.Instance.IsBrushExperimental(brush)) { - continue; + m_GuiBrushList.Add(brush); } - m_GuiBrushList.Add(brush); } + BrushCatalogChanged?.Invoke(); } public Brush[] GetTagFilteredBrushList() { - List includeTags = App.UserConfig.Brushes.IncludeTags.ToList(); - List excludeTags = App.UserConfig.Brushes.ExcludeTags.ToList(); + List includeTags = App.UserConfig.Brushes.IncludeTags?.ToList(); + List excludeTags = App.UserConfig.Brushes.ExcludeTags?.ToList(); if (includeTags == null || includeTags.Count == 0) { @@ -288,7 +291,7 @@ Brush _FindBrushByDescription(string brushDescription) static private List LoadBrushesInManifest() { List output = new List(); - var manifest = App.Instance.m_Manifest; + var manifest = App.Instance.ManifestFull; foreach (var desc in manifest.Brushes) { if (desc != null) diff --git a/Assets/Scripts/Commands/BaseCommand.cs b/Assets/Scripts/Commands/BaseCommand.cs index 45492bcf57..5ba656cac7 100644 --- a/Assets/Scripts/Commands/BaseCommand.cs +++ b/Assets/Scripts/Commands/BaseCommand.cs @@ -16,6 +16,7 @@ using System.Linq; using System.Collections.Generic; using UnityEngine; +using OpenBrush.Multiplayer; namespace TiltBrush { @@ -29,6 +30,24 @@ public class BaseCommand : IDisposable private Guid m_Guid; private BaseCommand m_Parent; protected List m_Children; + private int m_Timestamp; + private int? m_NetworkTimestamp; + + public void SetParent(BaseCommand parent) + { + m_Parent = parent; + } + public int Timestamp + { + get { return m_Timestamp; } + set { m_Timestamp = value; } + } + + public int? NetworkTimestamp + { + get { return m_NetworkTimestamp; } + set { m_NetworkTimestamp = value; } + } public int ChildrenCount { @@ -77,6 +96,23 @@ public BaseCommand(BaseCommand parent = null) parent.m_Children.Add(this); m_Parent = parent; } + + m_Timestamp = (int)(App.Instance.CurrentSketchTime * 1000); // convert to milliseconds + m_NetworkTimestamp = MultiplayerManager.m_Instance?.GetNetworkedTimestampMilliseconds(); + } + + // constructor that takes an existing Guid and Timestamp used in multiplayer to mantain consistences of commands across peers + public BaseCommand(Guid existingGuid, int timestamp, BaseCommand parent = null) + { + m_Guid = existingGuid; + m_Children = new List(); + if (parent != null) + { + parent.m_Children.Add(this); + m_Parent = parent; + } + m_Timestamp = timestamp; + m_NetworkTimestamp = timestamp; } /// True if this command changes the sketch in a saveable diff --git a/Assets/Scripts/Commands/BrushStrokeCommand.cs b/Assets/Scripts/Commands/BrushStrokeCommand.cs index 3cce0caa6b..586f5dca07 100644 --- a/Assets/Scripts/Commands/BrushStrokeCommand.cs +++ b/Assets/Scripts/Commands/BrushStrokeCommand.cs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System; using UnityEngine; namespace TiltBrush @@ -31,6 +32,18 @@ public BrushStrokeCommand(Stroke stroke, StencilWidget widget = null, float lineLength = -1, BaseCommand parent = null) : base(parent) { m_Stroke = stroke; + m_Stroke.Command = this; + m_Widget = widget; + m_LineLength_CS = lineLength; + } + + // New constructor that accepts an existing Guid + public BrushStrokeCommand(Stroke stroke, Guid existingGuid, int timestamp, StencilWidget widget = null, + float lineLength = -1, BaseCommand parent = null) + : base(existingGuid, timestamp, parent) + { + m_Stroke = stroke; + m_Stroke.Command = this; m_Widget = widget; m_LineLength_CS = lineLength; } diff --git a/Assets/Scripts/Commands/DeleteStrokeCommand.cs b/Assets/Scripts/Commands/DeleteStrokeCommand.cs index 18f86c1d30..c8d5abe85c 100644 --- a/Assets/Scripts/Commands/DeleteStrokeCommand.cs +++ b/Assets/Scripts/Commands/DeleteStrokeCommand.cs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System; +using UnityEditor; using UnityEngine; namespace TiltBrush @@ -33,6 +35,13 @@ public DeleteStrokeCommand(Stroke stroke, BaseCommand parent = null) m_SilenceFirstAudio = true; } + public DeleteStrokeCommand(Stroke stroke, Guid existingGuid, int timestamp, BaseCommand parent = null) + : base(existingGuid, timestamp, parent) + { + m_TargetStroke = stroke; + m_SilenceFirstAudio = true; + } + public override bool NeedsSave { get { return true; } } protected override void OnRedo() diff --git a/Assets/Scripts/Commands/SwitchEnvironmentCommand.cs b/Assets/Scripts/Commands/SwitchEnvironmentCommand.cs index f4d721dea2..dab3d40b58 100644 --- a/Assets/Scripts/Commands/SwitchEnvironmentCommand.cs +++ b/Assets/Scripts/Commands/SwitchEnvironmentCommand.cs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System; + namespace TiltBrush { public class SwitchEnvironmentCommand : BaseCommand @@ -19,7 +21,7 @@ public class SwitchEnvironmentCommand : BaseCommand private CustomLights m_PrevLights; private CustomEnvironment m_PrevBackdrop; private Environment m_PrevEnvironment; - private Environment m_NextEnvironment; + public Environment m_NextEnvironment; public SwitchEnvironmentCommand(Environment nextEnv, BaseCommand parent = null) : base(parent) { @@ -36,6 +38,22 @@ public SwitchEnvironmentCommand(Environment nextEnv, BaseCommand parent = null) } } + public SwitchEnvironmentCommand(Environment nextEnv, Guid existingGuid, int timestamp, BaseCommand parent = null) + : base(existingGuid, timestamp, parent) + { + m_NextEnvironment = nextEnv; + m_PrevBackdrop = SceneSettings.m_Instance.CustomEnvironment; + if (SceneSettings.m_Instance.IsTransitioning) + { + m_PrevEnvironment = SceneSettings.m_Instance.GetDesiredPreset(); + } + else + { + m_PrevLights = LightsControlScript.m_Instance.CustomLights; + m_PrevEnvironment = SceneSettings.m_Instance.CurrentEnvironment; + } + } + public override bool NeedsSave { get diff --git a/Assets/Scripts/Config.cs b/Assets/Scripts/Config.cs index efadeeb3db..567540f5f5 100644 --- a/Assets/Scripts/Config.cs +++ b/Assets/Scripts/Config.cs @@ -113,9 +113,6 @@ private class UserConfigChange // The sdk mode indicates which SDK that we're using to drive the display. public SdkMode m_SdkMode; - // Stores the value of IsExperimental at startup time - [NonSerialized] public bool m_WasExperimentalAtStartup; - // Whether or not to just do an automatic profile and then exit. public bool m_AutoProfile; // How long to wait before starting to profile. @@ -126,12 +123,13 @@ private class UserConfigChange public string[] m_SketchFiles = new string[0]; [NonSerialized] public bool m_QuickLoad = true; - public SecretsConfig.ServiceAuthData GoogleSecrets => Secrets[SecretsConfig.Service.Google]; + public SecretsConfig.ServiceAuthData GoogleSecrets => Secrets?[SecretsConfig.Service.Google]; public SecretsConfig.ServiceAuthData SketchfabSecrets => Secrets[SecretsConfig.Service.Sketchfab]; public SecretsConfig.ServiceAuthData OculusSecrets => Secrets[SecretsConfig.Service.Oculus]; public SecretsConfig.ServiceAuthData OculusMobileSecrets => Secrets[SecretsConfig.Service.OculusMobile]; public SecretsConfig.ServiceAuthData PimaxSecrets => Secrets[SecretsConfig.Service.Pimax]; public SecretsConfig.ServiceAuthData PhotonFusionSecrets => Secrets[SecretsConfig.Service.PhotonFusion]; + public SecretsConfig.ServiceAuthData PhotonVoiceSecrets => Secrets[SecretsConfig.Service.PhotonVoice]; public bool DisableAccountLogins; @@ -530,12 +528,6 @@ public bool GeometryShaderSuppported } } - // Non-Static version of above - public bool GetIsExperimental() - { - return PlayerPrefs.HasKey("ExperimentalMode") && PlayerPrefs.GetInt("ExperimentalMode") == 1; - } - public void SetIsExperimental(bool active) { PlayerPrefs.SetInt("ExperimentalMode", active ? 1 : 0); @@ -546,7 +538,6 @@ public void SetIsExperimental(bool active) void Awake() { m_SingletonState = this; - m_WasExperimentalAtStartup = GetIsExperimental(); #if UNITY_EDITOR if (!string.IsNullOrEmpty(m_FakeCommandLineArgsInEditor)) @@ -580,12 +571,9 @@ void Awake() #endif m_BrushReplacement = new Dictionary(); - if (IsExperimental) + foreach (var brush in m_BrushReplacementMap) { - foreach (var brush in m_BrushReplacementMap) - { - m_BrushReplacement.Add(new Guid(brush.FromGuid), new Guid(brush.ToGuid)); - } + m_BrushReplacement.Add(new Guid(brush.FromGuid), new Guid(brush.ToGuid)); } } diff --git a/Assets/Scripts/Environment.cs b/Assets/Scripts/Environment.cs index fae21811ef..5b57756971 100644 --- a/Assets/Scripts/Environment.cs +++ b/Assets/Scripts/Environment.cs @@ -175,6 +175,7 @@ public Material m_SkyboxMaterial public Color m_SkyboxColorA; public Color m_SkyboxColorB; + public bool isPassthrough; } } // namespace TiltBrush diff --git a/Assets/Scripts/EnvironmentCatalog.cs b/Assets/Scripts/EnvironmentCatalog.cs index ffe69c8924..827a4d194a 100644 --- a/Assets/Scripts/EnvironmentCatalog.cs +++ b/Assets/Scripts/EnvironmentCatalog.cs @@ -107,7 +107,7 @@ void Update() static void LoadEnvironmentsInManifest(List output) { - var manifest = App.Instance.m_Manifest; + var manifest = App.Instance.ManifestFull; foreach (var asset in manifest.Environments) { if (asset != null) diff --git a/Assets/Scripts/GUI/AdminPanel.cs b/Assets/Scripts/GUI/AdminPanel.cs index d46b99c9c0..e6c0003c05 100644 --- a/Assets/Scripts/GUI/AdminPanel.cs +++ b/Assets/Scripts/GUI/AdminPanel.cs @@ -43,6 +43,7 @@ public class AdminPanel : BasePanel [SerializeField] GameObject m_MemoryWarning; [SerializeField] GameObject m_MemoryWarningButton; [SerializeField] Color m_MemoryWarningColor; + [SerializeField] GameObject m_MultiplayerButton; [SerializeField] float m_ButtonRotationAngle = 45f; [SerializeField] LocalizedString m_ShareButtonLoggedOutExtraText; diff --git a/Assets/Scripts/GUI/AppSettingsPanel.cs b/Assets/Scripts/GUI/AppSettingsPanel.cs index ffe5450a9a..d26c00abcf 100644 --- a/Assets/Scripts/GUI/AppSettingsPanel.cs +++ b/Assets/Scripts/GUI/AppSettingsPanel.cs @@ -24,7 +24,7 @@ public class AppSettingsPanel : BasePanel public override void InitPanel() { base.InitPanel(); - m_ExperimentalModeToggle.IsToggledOn = App.Config.GetIsExperimental(); + m_ExperimentalModeToggle.IsToggledOn = Config.IsExperimental; } public void HandleToggleHandedness() @@ -43,7 +43,6 @@ public void HandleResetFirstUse() public void HandleToggleExperimentalMode(ToggleButton btn) { App.Config.SetIsExperimental(btn.IsToggledOn); - RestartNotification(); } private void RestartNotification() diff --git a/Assets/Scripts/GUI/BasePanel.cs b/Assets/Scripts/GUI/BasePanel.cs index 5868bc41c7..62e963ddcd 100644 --- a/Assets/Scripts/GUI/BasePanel.cs +++ b/Assets/Scripts/GUI/BasePanel.cs @@ -106,6 +106,7 @@ public enum PanelType ReferenceMobile, CameraPath, BrushLab, + Multiplayer, WebcamPanel = 5200, Scripts = 6000, SnapSettings = 8000, diff --git a/Assets/Scripts/GUI/BrushTypeButton.cs b/Assets/Scripts/GUI/BrushTypeButton.cs index 359b404a0e..dd63934f8b 100644 --- a/Assets/Scripts/GUI/BrushTypeButton.cs +++ b/Assets/Scripts/GUI/BrushTypeButton.cs @@ -114,10 +114,7 @@ public void SetButtonProperties(BrushDescriptor rBrush) VisualizerManager.m_Instance.VisualsRequested); // Play standard click sound if brush doesn't have a custom button sound m_ButtonHasPressedAudio = (rBrush.m_ButtonAudio == null); - if (App.Config.m_WasExperimentalAtStartup) - { - m_ExperimentalIcon.SetActive(App.Instance.IsBrushExperimental(rBrush)); - } + m_ExperimentalIcon.SetActive(App.Instance.IsBrushExperimental(rBrush)); } override protected void OnDescriptionActivated() diff --git a/Assets/Scripts/GUI/LightingPopUpWindow.cs b/Assets/Scripts/GUI/LightingPopUpWindow.cs index 61be8830df..28abbc2d4f 100644 --- a/Assets/Scripts/GUI/LightingPopUpWindow.cs +++ b/Assets/Scripts/GUI/LightingPopUpWindow.cs @@ -23,13 +23,13 @@ using UnityEngine; using System.Collections.Generic; using System.Linq; +using OpenBrush.Multiplayer; namespace TiltBrush { public class LightingPopUpWindow : PagingPopUpWindow { - private const string PASSTHROUGH_GUID = "e38af599-4575-46ff-a040-459703dbcd36"; private string m_CurrentPresetGuid; [SerializeField] private Transform m_PassthroughControls; @@ -64,17 +64,11 @@ override public void Init(GameObject rParent, string sText) // Remove passthrough scene for devices that don't support it #if !PASSTHROUGH_SUPPORTED - foreach (var env in m_Environments) - { - // Passthrough - if (env.m_Guid.ToString() == PASSTHROUGH_GUID) - { - m_Environments.Remove(env); - break; - } - } -#endif // PASSTHROUGH_SUPPORTED - + RemovePassthrough(); +#else // PASSTHROUGH_SUPPORTED + // Remove passthrough if multiplayer connected + if (MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM) RemovePassthrough(); +#endif //find the active lighting preset TiltBrush.Environment rCurrentPreset = SceneSettings.m_Instance.GetDesiredPreset(); if (rCurrentPreset != null) @@ -106,6 +100,18 @@ override public void Init(GameObject rParent, string sText) base.Init(rParent, sText); } + public void RemovePassthrough() + { + foreach (var env in m_Environments) + { + if (env.isPassthrough) + { + m_Environments.Remove(env); + break; + } + } + } + public void HandleCanvasLockToggle() { SketchControlsScript.m_Instance.m_DisableWorldGrabbing = m_WorldLockToggle.IsToggledOn; @@ -119,8 +125,7 @@ public void HandleCanvasReset(ActionButton btn) override protected void RefreshPage() { base.RefreshPage(); - bool passthroughActive = m_CurrentPresetGuid == PASSTHROUGH_GUID; - if (passthroughActive) + if (isPassThroughActive()) { m_PassthroughControls.gameObject.SetActive(true); } @@ -136,8 +141,7 @@ protected void OnFadingToDesiredEnvironment() if (rCurrentPreset != null) { m_CurrentPresetGuid = rCurrentPreset.m_Guid.ToString(); - bool passthroughActive = m_CurrentPresetGuid == PASSTHROUGH_GUID; - if (passthroughActive) + if (isPassThroughActive()) { m_PassthroughControls.gameObject.SetActive(true); m_WorldLockToggle.IsToggledOn = true; @@ -153,9 +157,15 @@ protected void OnFadingToDesiredEnvironment() RefreshPage(); } + private bool isPassThroughActive() + { + return m_Environments.Any(env => env.isPassthrough && env.m_Guid.ToString() == m_CurrentPresetGuid); + } + void OnDestroy() { SceneSettings.m_Instance.FadingToDesiredEnvironment -= OnFadingToDesiredEnvironment; } + } } // namespace TiltBrush diff --git a/Assets/Scripts/GUI/LocalePopUpWindow.cs b/Assets/Scripts/GUI/LocalePopUpWindow.cs index f4344858cb..0a907810f1 100644 --- a/Assets/Scripts/GUI/LocalePopUpWindow.cs +++ b/Assets/Scripts/GUI/LocalePopUpWindow.cs @@ -47,7 +47,7 @@ override public void Init(GameObject rParent, string sText) //build list of locale presets we're going to show Locale currentSelectedLocale = LocalizationSettings.SelectedLocale; - m_Locales = App.Instance.m_Manifest.Locales; + m_Locales = App.Instance.ManifestFull.Locales; int iPresetIndex = -1; m_CurrentPresetIdCode = currentSelectedLocale.Identifier.Code; diff --git a/Assets/Scripts/GUI/MultiplayerPanel.cs b/Assets/Scripts/GUI/MultiplayerPanel.cs new file mode 100644 index 0000000000..6e70a0d5c5 --- /dev/null +++ b/Assets/Scripts/GUI/MultiplayerPanel.cs @@ -0,0 +1,369 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using OpenBrush.Multiplayer; +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.Localization; +using UnityEngine.Localization.Settings; + +namespace TiltBrush +{ + public class MultiplayerPanel : BasePanel + { + + [SerializeField] private TextMeshPro m_State; + [SerializeField] private LocalizedString m_StatString; + [SerializeField] private TextMeshPro m_RoomNumber; + [SerializeField] private LocalizedString m_RoomNumberString; + [SerializeField] private TextMeshPro m_Nickname; + [SerializeField] private LocalizedString m_NicknameString; + [SerializeField] private TextMeshPro m_RoomOwnership; + [SerializeField] private LocalizedString m_RoomOwnerString; + [SerializeField] private LocalizedString m_NotRoomOwnerString; + [SerializeField] private TextMeshPro m_AlertsErrors; + [SerializeField] private LocalizedString m_AlertsErrorBeginnerModeActive; + [SerializeField] private LocalizedString m_AlertsRoomAlreadyExistent; + [SerializeField] private LocalizedString m_AlertsPassThroughAcive; + + private PlayerPrefsDataStore m_multiplayer; + private bool updateDisplay = false; + + public string RoomName + { + get { return data.roomName; } + set + { + data.roomName = value; + UpdateDisplay(); + } + } + + public string NickName + { + get + { + + if (MultiplayerManager.m_Instance) return MultiplayerManager.m_Instance.UserInfo.Nickname; + return ""; + } + set + { + ConnectionUserInfo ui = new ConnectionUserInfo + { + Nickname = value, + UserId = MultiplayerManager.m_Instance.UserInfo.UserId, + Role = MultiplayerManager.m_Instance.UserInfo.Role + }; + MultiplayerManager.m_Instance.UserInfo = ui; + UpdateDisplay(); + SaveNickname(value); + } + } + + private RoomCreateData data; + + private List>> alertChecks; + + public void Awake() + { + data = new RoomCreateData + { + roomName = GenerateUniqueRoomName(), + @private = false, + maxPlayers = 4, + voiceDisabled = false + }; + + alertChecks = new List>> + { + CheckAdvancedModeActive, + CheckIfPassThroughEnvironment, + CheckMultiplayerManagerErrors, + CheckIfRoomExist, + }; + + if (MultiplayerManager.m_Instance != null) + { + MultiplayerManager.m_Instance.StateUpdated += OnStateUpdated; + MultiplayerManager.m_Instance.RoomOwnershipUpdated += OnRoomOwnershipUpdated; + } + + LocalizationSettings.SelectedLocaleChanged += OnLanguageChanged; + + } + + private void OnLanguageChanged(Locale newLocale) + { + updateDisplay = true; + } + + public async void RetrieveUsername() + { + var storedNickname = await m_multiplayer.GetAsync("nickname"); + NickName = storedNickname ?? "Unnamed"; + } + + + private async void SaveNickname(string nickname) + { + await m_multiplayer.StoreAsync("nickname", nickname); + } + + protected override void OnEnablePanel() + { + base.OnEnablePanel(); + + m_multiplayer = new PlayerPrefsDataStore("Multiplayer"); + RetrieveUsername(); + + if (MultiplayerManager.m_Instance == null) return; + if (MultiplayerManager.m_Instance.State == ConnectionState.INITIALIZED || MultiplayerManager.m_Instance.State == ConnectionState.DISCONNECTED) + { + MultiplayerManager.m_Instance.Connect(); + } + + if (updateDisplay) UpdateDisplay(); + } + + protected override void OnDisablePanel() + { + base.OnDisablePanel(); + + if (MultiplayerManager.m_Instance == null) return; + if (MultiplayerManager.m_Instance.State != ConnectionState.IN_ROOM) + { + MultiplayerManager.m_Instance.Disconnect(); + } + } + + private static string GenerateUniqueRoomName() + { + const int maxAttempts = 10; + string roomName; + int attempts = 0; + + do + { + roomName = GenerateRandomRoomName(); + attempts++; + } while (MultiplayerManager.m_Instance != null && + MultiplayerManager.m_Instance.DoesRoomNameExist(roomName) && + attempts < maxAttempts); + + if (attempts >= maxAttempts) + { + return "default room"; + } + + return roomName; + } + + private static string GenerateRandomRoomName() + { + System.Random random = new System.Random(); + return random.Next(100000, 999999).ToString(); + } + + private void UpdateDisplay() + { + if (m_RoomNumber) m_RoomNumber.text = m_RoomNumberString.GetLocalizedString() + data.roomName; + if (m_Nickname) m_Nickname.text = m_NicknameString.GetLocalizedString() + NickName; + Alerts(); + updateDisplay = false; + } + + private async void Connect() + { + if (MultiplayerManager.m_Instance != null) + { + await MultiplayerManager.m_Instance.Connect(); + } + } + + private async void JoinRoom() + { + + if (MultiplayerManager.m_Instance != null) + { + await MultiplayerManager.m_Instance.JoinRoom(data); + } + } + + private async void LeaveRoom() + { + if (MultiplayerManager.m_Instance != null) + { + await MultiplayerManager.m_Instance.LeaveRoom(false); + } + } + + private async void Disconnect() + { + if (MultiplayerManager.m_Instance != null) + { + await MultiplayerManager.m_Instance.Disconnect(); + } + } + + private void OnStateUpdated(ConnectionState newState) + { + if (!m_State) return; + m_State.text = m_StatString.GetLocalizedString() + StateToString(newState); + UpdateDisplay(); + } + + private string StateToString(ConnectionState newState) + { + switch (newState) + { + case ConnectionState.INITIALIZING: + return "Initializing"; + case ConnectionState.INITIALIZED: + return "Initialized"; + case ConnectionState.DISCONNECTED: + return "Disconnected"; + case ConnectionState.DISCONNECTING: + return "Disconnecting"; + case ConnectionState.CONNECTING: + return "Connecting"; + case ConnectionState.AUTHENTICATING: + return "Authenticating"; + case ConnectionState.IN_LOBBY: + return "In Lobby"; + case ConnectionState.IN_ROOM: + return "In Room"; + case ConnectionState.ERROR: + return "Error"; + default: + return "Unknown"; + } + } + + private void OnRoomOwnershipUpdated(bool isRoomOwner) + { + if (!m_RoomOwnership) return; + + var localizedString = isRoomOwner ? m_RoomOwnerString : m_NotRoomOwnerString; + localizedString.GetLocalizedStringAsync().Completed += handle => + { m_RoomOwnership.text = handle.Result; }; + } + + private Tuple CheckAdvancedModeActive() + { + if (PanelManager.m_Instance != null) + { + bool isAdvancedModeActive = PanelManager.m_Instance.AdvancedModeActive(); + return Tuple.Create(isAdvancedModeActive, m_AlertsErrorBeginnerModeActive.GetLocalizedString()); + } + return Tuple.Create(false, ""); + } + + private Tuple CheckMultiplayerManagerErrors() + { + + if (MultiplayerManager.m_Instance != null) + { + if (MultiplayerManager.m_Instance.State == ConnectionState.ERROR) + return Tuple.Create(true, MultiplayerManager.m_Instance.LastError); + } + + return Tuple.Create(false, ""); + + } + + private Tuple CheckIfRoomExist() + { + + if (MultiplayerManager.m_Instance != null && MultiplayerManager.m_Instance.State == ConnectionState.IN_LOBBY) + { + if (MultiplayerManager.m_Instance.DoesRoomNameExist(data.roomName)) + return Tuple.Create(true, m_AlertsRoomAlreadyExistent.GetLocalizedString()); + } + + return Tuple.Create(false, ""); + + } + + private Tuple CheckIfPassThroughEnvironment() + { + + if (MultiplayerManager.m_Instance != null && MultiplayerManager.m_Instance.State == ConnectionState.IN_LOBBY) + { + TiltBrush.Environment targetEnvironment = SceneSettings.m_Instance.GetDesiredPreset(); + if (targetEnvironment.isPassthrough) + return Tuple.Create(true, m_AlertsPassThroughAcive.GetLocalizedString()); + } + + return Tuple.Create(false, ""); + } + + private void Alerts() + { + if (m_AlertsErrors) + { + bool shouldShowAlert = false; + string alertMessage = ""; + + foreach (Func> check in alertChecks) + { + var (isTriggered, message) = check.Invoke(); + if (isTriggered) + { + shouldShowAlert = true; + alertMessage += message + "\n"; + break; + } + } + m_AlertsErrors.gameObject.GetComponent().text = alertMessage; + m_AlertsErrors.gameObject.SetActive(shouldShowAlert); + } + } + + public void OnMultiplayerPanelButtonPressed(MultiplayerPanelButton button) + { + switch (button.m_Command) + { + + case SketchControlsScript.GlobalCommands.Null: + //UpdateMode(Mode.Disconnected); + break; + case SketchControlsScript.GlobalCommands.MultiplayerConnect: + Connect(); + break; + case SketchControlsScript.GlobalCommands.MultiplayerPanelOptions: + //switch ((Mode)button.m_CommandParam) + //{ + // case Mode.Lobby: + // UpdateMode(Mode.Lobby); + // break; + // default: + // break; + //} + break; + case SketchControlsScript.GlobalCommands.MultiplayerJoinRoom: + JoinRoom(); + break; + case SketchControlsScript.GlobalCommands.MultiplayerLeaveRoom: + LeaveRoom(); + break; + case SketchControlsScript.GlobalCommands.MultiplayerDisconnect: + Disconnect(); + break; + } + } + } +} // namespace TiltBrush diff --git a/Assets/Scripts/GUI/MultiplayerPanel.cs.meta b/Assets/Scripts/GUI/MultiplayerPanel.cs.meta new file mode 100644 index 0000000000..de5d3586ae --- /dev/null +++ b/Assets/Scripts/GUI/MultiplayerPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8826790ad4eae8c4b9690bfac756b1ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GUI/MultiplayerPanelButton.cs b/Assets/Scripts/GUI/MultiplayerPanelButton.cs new file mode 100644 index 0000000000..2a78479bcb --- /dev/null +++ b/Assets/Scripts/GUI/MultiplayerPanelButton.cs @@ -0,0 +1,45 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using UnityEngine; + +namespace TiltBrush +{ + public class MultiplayerPanelButton : OptionButton + { + [SerializeField] private bool m_CommandIgnored = false; + + override protected void OnButtonPressed() + { + + MultiplayerPanel popup = m_Manager.GetComponent(); + + // For some circumstances on mobile, we want to ignore the command, but still + // notify the popup that we were pressed. Which happens below. + if (!m_CommandIgnored) + { + if (m_RequiresPopup & m_Command == SketchControlsScript.GlobalCommands.EditMultiplayerRoomName) + { + KeyboardPopUpWindow.m_InitialText = popup.RoomName; + } + + base.OnButtonPressed(); + } + + + Debug.Assert(popup != null); + popup.OnMultiplayerPanelButtonPressed(this); + } + } +} // namespace TiltBrush diff --git a/Assets/Scripts/GUI/MultiplayerPanelButton.cs.meta b/Assets/Scripts/GUI/MultiplayerPanelButton.cs.meta new file mode 100644 index 0000000000..8cc41752e7 --- /dev/null +++ b/Assets/Scripts/GUI/MultiplayerPanelButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b78a8d7209bbdc546979b549a875d550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GUI/PanelManager.cs b/Assets/Scripts/GUI/PanelManager.cs index 7bcea47238..3148ec5851 100644 --- a/Assets/Scripts/GUI/PanelManager.cs +++ b/Assets/Scripts/GUI/PanelManager.cs @@ -162,6 +162,9 @@ public enum PanelMode // StandardToMemoryWarning - Transition to Memory Warning can come from any state. MemoryWarningToStandard, + Multiplayer, + StandardToMultiplayer, + MultiplayerToStandard } public enum PaneVisualsState @@ -225,6 +228,7 @@ public bool AvailableInCurrentMode private List m_MemoryWarningPanels; private List m_CameraPanels; private List m_BrushLabPanels; + private List m_MultiplayerPanels; private BasePanel m_AdminPanel; private AdvancedPanelLayouts m_CachedPanelLayouts; @@ -252,6 +256,7 @@ public bool AvailableInCurrentMode private float m_MemoryWarningScale; private float m_CameraScale; private float m_BrushLabScale; + private float m_MultiplayerScale; private PanelsState m_PanelsState; private PanelMode m_PanelsMode; @@ -291,7 +296,7 @@ public Color PanelBorderMeshOutlineColor public bool PanelsAreStable() { return StandardActive() || SketchbookActive() || SettingsActive() || MemoryWarningActive() || - CameraActive() || BrushLabActive(); + CameraActive() || BrushLabActive() || MultiplayerActive(); } public bool StandardActive() { return m_PanelsMode == PanelMode.Standard; } public bool SketchbookActive() { return m_PanelsMode == PanelMode.Sketchbook; } @@ -299,6 +304,7 @@ public bool PanelsAreStable() public bool CameraActive() { return m_PanelsMode == PanelMode.Camera; } public bool MemoryWarningActive() { return m_PanelsMode == PanelMode.MemoryWarning; } public bool BrushLabActive() { return m_PanelsMode == PanelMode.BrushLab; } + public bool MultiplayerActive() { return m_PanelsMode == PanelMode.Multiplayer; } public bool PanelsHaveBeenCustomized() { return m_PanelsCustomized; } public bool AdvancedModeActive() { return m_AdvancedPanels; } public bool SketchbookActiveIncludingTransitions() @@ -359,7 +365,8 @@ public bool IsPanelUnique(BasePanel.PanelType type) return IsAdminPanel(type) || type == BasePanel.PanelType.AppSettings || type == BasePanel.PanelType.AppSettingsMobile || type == BasePanel.PanelType.Sketchbook || type == BasePanel.PanelType.SketchbookMobile || - type == BasePanel.PanelType.Camera || type == BasePanel.PanelType.MemoryWarning; + type == BasePanel.PanelType.Camera || type == BasePanel.PanelType.MemoryWarning || + type == BasePanel.PanelType.Multiplayer; } // Core panels are those that exist in the basic mode experience. Practically, those that @@ -386,6 +393,7 @@ public void Init() m_MemoryWarningPanels = new List(); m_CameraPanels = new List(); m_BrushLabPanels = new List(); + m_MultiplayerPanels = new List(); m_RevealParticleParent = new GameObject("ParticlesParent"); m_RevealParticleParent.transform.parent = transform; @@ -550,6 +558,10 @@ void CreatePanel(PanelMapKey key, bool advancedPanel) { m_BrushLabPanels.Add(p); } + else if (p.Type == BasePanel.PanelType.Multiplayer) + { + m_MultiplayerPanels.Add(p); + } else if (IsAdminPanel(p.Type)) { Debug.Assert(m_AdminPanel == null, "Multiple Admin Panels are being created."); @@ -873,7 +885,8 @@ public void UpdateWandOrientationControls() (m_PanelsMode == PanelMode.Sketchbook || m_PanelsMode == PanelMode.Settings || m_PanelsMode == PanelMode.MemoryWarning || - m_PanelsMode == PanelMode.Camera); + m_PanelsMode == PanelMode.Camera || + m_PanelsMode == PanelMode.Multiplayer); if (inVisibleAltMode && App.VrSdk.AnalogIsStick(InputManager.ControllerName.Wand)) { if (m_AltModeSwipeEatStickInput) @@ -916,6 +929,10 @@ public void UpdateWandOrientationControls() { ToggleCameraPanels(); } + else if (m_PanelsMode == PanelMode.Multiplayer) + { + ToggleMultiplayerPanels(); + } } } } @@ -1162,7 +1179,8 @@ public void AttachHeldPanelToWand(BasePanel panel) if (m_PanelsMode == PanelMode.Sketchbook || m_PanelsMode == PanelMode.Settings || m_PanelsMode == PanelMode.MemoryWarning || - m_PanelsMode == PanelMode.Camera) + m_PanelsMode == PanelMode.Camera || + m_PanelsMode == PanelMode.Multiplayer) { return; } @@ -1690,6 +1708,11 @@ public void LockPanelsToController() { SetAltPanelXfFromWand(m_BrushLabPanels[i], rBaseTransform); } + + for (int i = 0; i < m_MultiplayerPanels.Count; ++i) + { + SetAltPanelXfFromWand(m_MultiplayerPanels[i], rBaseTransform); + } } // Keep admin panel locked. @@ -1803,7 +1826,10 @@ public void SetVisible(bool bVisible) { m_BrushLabPanels[i].ResetPanel(); } - + for (int i = 0; i < m_MultiplayerPanels.Count; ++i) + { + m_MultiplayerPanels[i].ResetPanel(); + } m_PanelsState = PanelsState.Exiting; } } @@ -1869,6 +1895,12 @@ public void ToggleMemoryWarningMode() } } + public void ToggleMultiplayerPanels() + { + ToggleMode(m_MultiplayerPanels, PanelMode.Multiplayer, PanelMode.StandardToMultiplayer, + PanelMode.MultiplayerToStandard); + } + // This function toggles between the 'mode' parameter and PanelMode.Standard. Currently, // transitions from a non-Standard mode to another non-Standard mode are not allowed. // toMode and fromMode define the transition modes to mode. @@ -1881,7 +1913,8 @@ void ToggleMode(List panels, PanelMode mode, PanelMode toMode, PanelM m_PanelsMode == PanelMode.SketchbookToStandard || m_PanelsMode == PanelMode.SettingsToStandard || m_PanelsMode == PanelMode.CameraToStandard || - m_PanelsMode == PanelMode.BrushLabToStandard) + m_PanelsMode == PanelMode.BrushLabToStandard || + m_PanelsMode == PanelMode.MultiplayerToStandard) { // If we're in full standard mode, reset the panels before we shrink 'em down. if (m_PanelsMode == PanelMode.Standard) @@ -1948,6 +1981,7 @@ void ForceModeScale(PanelMode mode) m_StandardScale = 0.0f; m_BrushLabScale = 0.0f; m_MemoryWarningScale = 0.0f; + m_MultiplayerScale = 0.0f; switch (mode) { @@ -1969,6 +2003,9 @@ void ForceModeScale(PanelMode mode) case PanelMode.BrushLab: m_BrushLabScale = 1.0f; break; + case PanelMode.Multiplayer: + m_MultiplayerScale = 1.0f; + break; default: Debug.LogError("PanelManager.ForceModeScale() called with unsupported mode."); break; @@ -2007,6 +2044,7 @@ void RefreshPanelsForAnimations() SetPanelListScaleAndActive(m_MemoryWarningPanels, m_MemoryWarningScale); SetPanelListScaleAndActive(m_CameraPanels, m_CameraScale); SetPanelListScaleAndActive(m_BrushLabPanels, m_BrushLabScale); + SetPanelListScaleAndActive(m_MultiplayerPanels, m_MultiplayerScale); } void SetPanelListScaleAndActive(List panels, float scale) @@ -2030,6 +2068,7 @@ void Update() case PanelMode.Settings: break; case PanelMode.MemoryWarning: break; case PanelMode.BrushLab: break; + case PanelMode.Multiplayer: break; case PanelMode.StandardToSketchbook: AnimateScaleToMode(ref m_StandardScale, ref m_SketchbookScale, PanelMode.Sketchbook); break; @@ -2051,6 +2090,12 @@ void Update() case PanelMode.StandardToBrushLab: AnimateScaleToMode(ref m_StandardScale, ref m_BrushLabScale, PanelMode.BrushLab); break; + case PanelMode.StandardToMultiplayer: + AnimateScaleToMode(ref m_StandardScale, ref m_MultiplayerScale, PanelMode.Multiplayer); + break; + case PanelMode.MultiplayerToStandard: + AnimateScaleToMode(ref m_MultiplayerScale, ref m_StandardScale, PanelMode.Standard); + break; case PanelMode.BrushLabToStandard: AnimateScaleToMode(ref m_BrushLabScale, ref m_StandardScale, PanelMode.Standard); break; diff --git a/Assets/Scripts/GUI/SketchbookButton.cs b/Assets/Scripts/GUI/SketchbookButton.cs index a8334858fd..4be0054324 100644 --- a/Assets/Scripts/GUI/SketchbookButton.cs +++ b/Assets/Scripts/GUI/SketchbookButton.cs @@ -21,6 +21,14 @@ public class SketchbookButton : OptionButton [SerializeField] private float m_AdjustDistanceAmount; [SerializeField] private Renderer m_IconRenderer; + override public void UpdateVisuals() + { + // this is ugly but for some reason even if this is set to true on the option button it gets turned to false + m_AllowUnavailable = true; + base.UpdateVisuals(); + + } + protected override void AdjustButtonPositionAndScale( float posAmount, float scaleAmount, float boxColliderGrowAmount) { diff --git a/Assets/Scripts/InfoCardAnimation.cs b/Assets/Scripts/InfoCardAnimation.cs index 66af47e99b..72185e26ce 100644 --- a/Assets/Scripts/InfoCardAnimation.cs +++ b/Assets/Scripts/InfoCardAnimation.cs @@ -284,5 +284,16 @@ void UpdateScale(float fScale) { transform.localScale = m_BaseScale * fScale; } + + public void UpdateHoldingDuration(float newDuration) + { + if (m_CurrentState == State.Holding) + { + m_HoldingStateDuration = newDuration; + m_StateTimer = 0.0f; + } + } + } -} // namespace TiltBrush + +}// namespace TiltBrush diff --git a/Assets/Scripts/Multiplayer/MultiplayerDataStructs.cs b/Assets/Scripts/Multiplayer/MultiplayerDataStructs.cs index 2401d272f0..8c7a63cdf1 100644 --- a/Assets/Scripts/Multiplayer/MultiplayerDataStructs.cs +++ b/Assets/Scripts/Multiplayer/MultiplayerDataStructs.cs @@ -23,14 +23,22 @@ public struct PlayerRigData { public Vector3 HeadPosition; public Quaternion HeadRotation; - public Vector3 HeadScale; public Vector3 ToolPosition; public Quaternion ToolRotation; + public Vector3 LeftHandPosition; + public Quaternion LeftHandRotation; + + public Vector3 RightHandPosition; + public Quaternion RightHandRotation; + public BrushData BrushData; public ExtraData ExtraData; - + public bool IsRoomOwner; + public float SceneScale; + public bool isReceivingVoiceTransmission; + public string Nickname; } [System.Serializable] @@ -46,4 +54,33 @@ public struct ExtraData { public ulong OculusPlayerId; } + + [System.Serializable] + public struct RoomCreateData + { + public string roomName; + public string roomPassword; + public bool @private; + public int maxPlayers; + public bool voiceDisabled; + } + + [System.Serializable] + public struct RoomData + { + public string roomName; + public bool @private; + public int numPlayers; + public int maxPlayers; + public bool voiceDisabled; + } + + + [System.Serializable] + public struct ConnectionUserInfo + { + public string UserId; + public string Nickname; + public string Role; + } } diff --git a/Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs b/Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs index a58eeb5210..3edab1b39f 100644 --- a/Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs +++ b/Assets/Scripts/Multiplayer/MultiplayerInterfaces.cs @@ -13,33 +13,75 @@ // limitations under the License. using System; -using System.Numerics; using System.Threading.Tasks; using TiltBrush; -using UnityEngine; namespace OpenBrush.Multiplayer { public interface IConnectionHandler { Task Connect(); + Task JoinRoom(RoomCreateData data); + Task LeaveRoom(bool force = false); + Task Disconnect(); + ConnectionState State { get; } + ConnectionUserInfo UserInfo { get; set; } + string LastError { get; } + } - bool IsConnected(); - Task Disconnect(bool force = false); + public interface IDataConnectionHandler : IConnectionHandler + { void Update(); - + int GetPlayerCount(); + int GetNetworkedTimestampMilliseconds(); + bool GetPlayerRoomOwnershipStatus(int playerId); + void SendLargeDataToPlayer(int playerId, byte[] largeData); Task PerformCommand(BaseCommand command); + Task SendCommandToPlayer(BaseCommand command, int playerId); + Task CheckCommandReception(BaseCommand command, int playerId); + Task CheckStrokeReception(Stroke stroke, int playerId); Task UndoCommand(BaseCommand command); Task RedoCommand(BaseCommand command); Task RpcSyncToSharedAnchor(string uuid); + Task RpcStartSyncHistory(int id); + Task RpcSyncHistoryPercentage(int id, int exp, int snt); + Task RpcHistorySyncComplete(int id); + + event Action Disconnected; + + } - //ITransientData SpawnPlayer(); + public interface IVoiceConnectionHandler : IConnectionHandler + { + void Update(); + bool StartSpeaking(); + bool StopSpeaking(); + public bool isTransmitting { get; } + + } + + public enum ConnectionState + { + INITIALIZING = 0, + INITIALIZED = 1, + DISCONNECTED = 2, + DISCONNECTING = 3, + CONNECTING = 4, + AUTHENTICATING = 5, + IN_LOBBY = 6, + JOINING_ROOM = 7, + IN_ROOM = 8, + RECONNECTING = 9, + ERROR = 10, + LEAVING_ROOM = 11 } public interface ITransientData { + int PlayerId { get; set; } + bool IsSpawned { get; } void TransmitData(T data); - T RecieveData(); + T ReceiveData(); } } diff --git a/Assets/Scripts/Multiplayer/MultiplayerManager.cs b/Assets/Scripts/Multiplayer/MultiplayerManager.cs index 91d588b393..2293913e0a 100644 --- a/Assets/Scripts/Multiplayer/MultiplayerManager.cs +++ b/Assets/Scripts/Multiplayer/MultiplayerManager.cs @@ -14,8 +14,12 @@ using System; using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using UnityEngine; -using Unity.XR.CoreUtils; + + + #if OCULUS_SUPPORTED using OVRPlatform = Oculus.Platform; #endif @@ -32,22 +36,77 @@ public enum MultiplayerType public class MultiplayerManager : MonoBehaviour { + public static MultiplayerManager m_Instance; public MultiplayerType m_MultiplayerType; + public event Action Disconnected; - private IConnectionHandler m_Manager; + private IDataConnectionHandler m_Manager; + private IVoiceConnectionHandler m_VoiceManager; - private ITransientData m_LocalPlayer; - private List> m_RemotePlayers; + public ITransientData m_LocalPlayer; + public List> m_RemotePlayers; - public Action> localPlayerJoined; - public Action> remotePlayerJoined; + public Action> localPlayerJoined; + public Action> remotePlayerJoined; + public Action playerLeft; + public Action> roomDataRefreshed; + + public event Action StateUpdated; + public event Action RoomOwnershipUpdated; + public event Action UserInfoStateUpdated; + + private List m_RoomData = new List(); + private double? m_NetworkOffsetTimestamp = null; ulong myOculusUserId; List oculusPlayerIds; + internal string UserId; + [HideInInspector] public string CurrentRoomName; + + private ConnectionState _state; + + public ConnectionState State + { + get => _state; + private set + { + if (_state != value) + { + _state = value; + StateUpdated?.Invoke(_state); + } + } + } - private bool IsConnected { get { return m_Manager != null && m_Manager.IsConnected(); } } + public string LastError { get; private set; } + + public ConnectionUserInfo UserInfo + { + get => m_Manager?.UserInfo ?? default; + set + { + if (m_Manager != null) + { + m_Manager.UserInfo = value; + } + } + } + private string m_oldNickName = null; + + [HideInInspector] public RoomCreateData data; + + private bool _isUserRoomOwner = false; + private bool isUserRoomOwner + { + get => _isUserRoomOwner; + set + { + _isUserRoomOwner = value; + RoomOwnershipUpdated?.Invoke(value); + } + } void Awake() { @@ -58,7 +117,6 @@ void Awake() void Start() { - #if OCULUS_SUPPORTED OVRPlatform.Users.GetLoggedInUser().OnComplete((msg) => { if (!msg.IsError) @@ -73,19 +131,34 @@ void Start() } }); #endif + + State = ConnectionState.INITIALIZING; switch (m_MultiplayerType) { case MultiplayerType.Photon: -#if FUSION_WEAVER +#if MP_PHOTON m_Manager = new PhotonManager(this); -#endif // FUSION_WEAVER + m_Manager.Disconnected += OnConnectionHandlerDisconnected; + if (m_Manager != null) ControllerConsoleScript.m_Instance.AddNewLine("PhotonManager Loaded"); + else ControllerConsoleScript.m_Instance.AddNewLine("PhotonManager Not Loaded"); +#endif +#if MP_PHOTON + m_VoiceManager = new PhotonVoiceManager(this); + if (m_VoiceManager != null) ControllerConsoleScript.m_Instance.AddNewLine("PhotonVoiceManager Loaded"); + else ControllerConsoleScript.m_Instance.AddNewLine("PhotonVoiceManager Not Loaded"); +#endif break; default: return; } + if (m_VoiceManager != null && m_Manager != null) State = ConnectionState.INITIALIZED; + roomDataRefreshed += OnRoomDataRefreshed; localPlayerJoined += OnLocalPlayerJoined; remotePlayerJoined += OnRemotePlayerJoined; + playerLeft += OnPlayerLeft; + StateUpdated += UpdateSketchMemoryScriptTimeOffset; + SketchMemoryScript.m_Instance.CommandPerformed += OnCommandPerformed; SketchMemoryScript.m_Instance.CommandUndo += OnCommandUndo; SketchMemoryScript.m_Instance.CommandRedo += OnCommandRedo; @@ -93,16 +166,150 @@ void Start() void OnDestroy() { + roomDataRefreshed -= OnRoomDataRefreshed; localPlayerJoined -= OnLocalPlayerJoined; remotePlayerJoined -= OnRemotePlayerJoined; + playerLeft -= OnPlayerLeft; + StateUpdated -= UpdateSketchMemoryScriptTimeOffset; + SketchMemoryScript.m_Instance.CommandPerformed -= OnCommandPerformed; SketchMemoryScript.m_Instance.CommandUndo -= OnCommandUndo; SketchMemoryScript.m_Instance.CommandRedo -= OnCommandRedo; } - public async void Connect() + public async Task Connect() { - var result = await m_Manager.Connect(); + State = ConnectionState.CONNECTING; + + var successData = false; + if (m_Manager != null) successData = await m_Manager.Connect(); + + var successVoice = false; + if (m_VoiceManager != null) successVoice = await m_VoiceManager.Connect(); + + if (!successData) + { + State = ConnectionState.ERROR; + LastError = m_Manager.LastError; + } + else if (!successVoice) + { + State = ConnectionState.ERROR; + LastError = m_VoiceManager.LastError; + } + else State = ConnectionState.IN_LOBBY; + + + return successData & successVoice; + } + + public async Task JoinRoom(RoomCreateData RoomData) + { + State = ConnectionState.JOINING_ROOM; + + // check if room exist to determine if user is room owner + DoesRoomNameExist(RoomData.roomName); + if (!isUserRoomOwner) SketchMemoryScript.m_Instance.ClearMemory(); + + bool successData = false; + if (m_Manager != null) successData = await m_Manager.JoinRoom(RoomData); + + bool successVoice = false; + if (m_VoiceManager != null) successVoice = await m_VoiceManager.JoinRoom(RoomData); + m_VoiceManager?.StartSpeaking(); + + if (!successData) + { + State = ConnectionState.ERROR; + LastError = m_Manager.LastError; + } + else if (!successVoice) + { + State = ConnectionState.ERROR; + LastError = m_VoiceManager.LastError; + } + else State = ConnectionState.IN_ROOM; + + return successData & successVoice; + } + + public async Task LeaveRoom(bool force = false) + { + State = ConnectionState.LEAVING_ROOM; + + bool successData = false; + if (m_Manager != null) successData = await m_Manager.LeaveRoom(); + + bool successVoice = false; + m_VoiceManager?.StopSpeaking(); + if (m_VoiceManager != null) successVoice = await m_VoiceManager.LeaveRoom(); + + if (!successData) + { + State = ConnectionState.ERROR; + LastError = m_Manager.LastError; + } + else if (!successVoice) + { + State = ConnectionState.ERROR; + LastError = m_VoiceManager.LastError; + } + else State = ConnectionState.IN_LOBBY; + + return successData & successVoice; + } + + public async Task Disconnect() + { + State = ConnectionState.DISCONNECTING; + + bool successData = false; + if (m_Manager != null) successData = await m_Manager.Disconnect(); + + bool successVoice = false; + if (m_VoiceManager != null) successVoice = await m_VoiceManager.Disconnect(); + + if (!successData) + { + State = ConnectionState.ERROR; + LastError = m_Manager.LastError; + } + else if (!successVoice) + { + State = ConnectionState.ERROR; + LastError = m_VoiceManager.LastError; + } + else State = ConnectionState.DISCONNECTED; + + return successData & successVoice; + } + + public bool DoesRoomNameExist(string roomName) + { + + bool roomExist = m_RoomData.Any(room => room.roomName == roomName); + + // Room does not exist + if (!roomExist) + { + isUserRoomOwner = true; + return false; + } + + // Find the room with the given name + RoomData? room = m_RoomData.FirstOrDefault(r => r.roomName == roomName); + + // Room exists + RoomData r = (RoomData)room; + if (r.numPlayers == 0) isUserRoomOwner = true;// and is empty user becomes room owner + else isUserRoomOwner = false; // not empty user is not the room owner + + return true; + } + + void OnRoomDataRefreshed(List rooms) + { + m_RoomData = rooms; } void Update() @@ -112,11 +319,23 @@ void Update() return; } + if (State != ConnectionState.IN_ROOM) + { + m_oldNickName = null; + return; + } + m_Manager.Update(); + m_VoiceManager.Update(); // Transmit local player data relative to scene origin var headRelativeToScene = App.Scene.AsScene[App.VrSdk.GetVrCamera().transform]; var pointerRelativeToScene = App.Scene.AsScene[PointerManager.m_Instance.MainPointer.transform]; + var headScale = App.VrSdk.GetVrCamera().transform.localScale; + var leftController = InputManager.m_Instance.GetController(InputManager.ControllerName.Brush).transform; + var rightController = InputManager.m_Instance.GetController(InputManager.ControllerName.Wand).transform; + var leftHandRelativeToScene = App.Scene.AsScene[leftController]; + var rightHandRelativeToScene = App.Scene.AsScene[rightController]; var data = new PlayerRigData { @@ -124,6 +343,11 @@ void Update() HeadRotation = headRelativeToScene.rotation, ToolPosition = pointerRelativeToScene.translation, ToolRotation = pointerRelativeToScene.rotation, + LeftHandPosition = leftHandRelativeToScene.translation, + LeftHandRotation = leftHandRelativeToScene.rotation, + RightHandPosition = rightHandRelativeToScene.translation, + RightHandRotation = rightHandRelativeToScene.rotation, + BrushData = new BrushData { Color = PointerManager.m_Instance.MainPointer.GetCurrentColor(), @@ -133,9 +357,15 @@ void Update() ExtraData = new ExtraData { OculusPlayerId = myOculusUserId, - } + }, + IsRoomOwner = isUserRoomOwner, + SceneScale = App.Scene.Pose.scale, + isReceivingVoiceTransmission = m_VoiceManager.isTransmitting, + Nickname = UserInfo.Nickname //TODO: remove from PlayerRigData or encode it and use photon to retrieve the string }; + + if (m_LocalPlayer != null) { m_LocalPlayer.TransmitData(data); @@ -146,7 +376,10 @@ void Update() bool newUser = false; foreach (var player in m_RemotePlayers) { - data = player.RecieveData(); + if (!player.IsSpawned) continue; + + data = player.ReceiveData(); +#if OCULUS_SUPPORTED // New user, share the anchor with them if (data.ExtraData.OculusPlayerId != 0 && !oculusPlayerIds.Contains(data.ExtraData.OculusPlayerId)) { @@ -155,6 +388,7 @@ void Update() oculusPlayerIds.Add(data.ExtraData.OculusPlayerId); newUser = true; } +#endif // OCULUS_SUPPORTED } if (newUser) @@ -163,53 +397,158 @@ void Update() } } - void OnLocalPlayerJoined(ITransientData playerData) + void OnLocalPlayerJoined(int id, ITransientData playerData) { + // the user is the room owner if is the firt to get in + isUserRoomOwner = m_Manager.GetPlayerCount() == 1 ? true : false; + // if not room owner clear scene + if (!isUserRoomOwner) SketchMemoryScript.m_Instance.ClearMemory(); + m_LocalPlayer = playerData; + m_LocalPlayer.PlayerId = id; + } - void OnRemotePlayerJoined(ITransientData playerData) + void OnRemotePlayerJoined(int id, ITransientData playerData) { - Debug.Log("Adding new player to track."); + playerData.PlayerId = id; m_RemotePlayers.Add(playerData); + + if (isUserRoomOwner) + { + MultiplayerSceneSync.m_Instance.StartSyncronizationForUser(id); + } } - private async void OnCommandPerformed(BaseCommand command) + public void SendLargeDataToPlayer(int playerId, byte[] Data) { - if (!IsConnected) + m_Manager.SendLargeDataToPlayer(playerId, Data); + } + + + + + void OnPlayerLeft(int id) + { + if (m_LocalPlayer.PlayerId == id) + { + m_LocalPlayer = null; + Debug.Log("Possible to get here!"); + return; + } + var copy = m_RemotePlayers.ToList(); + foreach (var player in copy) { + if (player.PlayerId == id) + { + m_RemotePlayers.Remove(player); + } + } + + // Reassign Ownership if needed + // Check if any remaining player is the room owner + bool anyRoomOwner = m_RemotePlayers.Any(player => m_Manager.GetPlayerRoomOwnershipStatus(player.PlayerId)) + || isUserRoomOwner; + + // If there's still a room owner, no reassignment is needed + if (anyRoomOwner) return; + + // If there are no other players left, the local player becomes the room owner + if (m_RemotePlayers.Count == 0) + { + isUserRoomOwner = true; return; } - var success = await m_Manager.PerformCommand(command); + // Since There are other players left + // Determine the new room owner by the lowest PlayerId + var allPlayers = new List> { m_LocalPlayer }; + allPlayers.AddRange(m_RemotePlayers); - // TODO: Proper rollback if command not possible right now. - // Commented so it doesn't interfere with general use. - // Link actions to connect/disconnect, not Unity lifecycle. + // Find the player with the lowest PlayerId + var newOwner = allPlayers.OrderBy(player => player.PlayerId).First(); - // if (!success) - // { - // OutputWindowScript.m_Instance.CreateInfoCardAtController(InputManager.ControllerName.Brush, "Don't know how to network this action yet."); - // SketchMemoryScript.m_Instance.StepBack(false); - // } + // If the new owner is the local player, set the flag + if (m_LocalPlayer.PlayerId == newOwner.PlayerId) isUserRoomOwner = true; + + } + + public async void OnCommandPerformed(BaseCommand command) + { + if (State == ConnectionState.IN_ROOM) + { + await m_Manager.PerformCommand(command); + } } - private void OnCommandUndo(BaseCommand command) + public async void SendCommandToPlayer(BaseCommand command, int playerID) { - if (IsConnected) + if (State == ConnectionState.IN_ROOM) + { + await m_Manager.SendCommandToPlayer(command, playerID); + } + } + + public async Task CheckCommandReception(BaseCommand command, int id) + { + if (State == ConnectionState.IN_ROOM) + { + return await m_Manager.CheckCommandReception(command, id); + } + + return false; + } + + public async Task CheckStrokeReception(Stroke stroke, int id) + { + if (State == ConnectionState.IN_ROOM) + { + return await m_Manager.CheckStrokeReception(stroke, id); + } + + return false; + } + + public void OnCommandUndo(BaseCommand command) + { + if (State == ConnectionState.IN_ROOM) { m_Manager.UndoCommand(command); } } - private void OnCommandRedo(BaseCommand command) + public void OnCommandRedo(BaseCommand command) { - if (IsConnected) + if (State == ConnectionState.IN_ROOM) { m_Manager.RedoCommand(command); } } + public async void StartSynchHistory(int id) + { + if (State == ConnectionState.IN_ROOM) + { + await m_Manager.RpcStartSyncHistory(id); + } + } + + public async void SynchHistoryPercentage(int id, int expected, int sent) + { + if (State == ConnectionState.IN_ROOM) + { + await m_Manager.RpcSyncHistoryPercentage(id, expected, sent); + } + } + + public async void SynchHistoryComplete(int id) + { + if (State == ConnectionState.IN_ROOM) + { + await m_Manager.RpcHistorySyncComplete(id); + } + } + async void ShareAnchors() { #if OCULUS_SUPPORTED @@ -225,5 +564,85 @@ async void ShareAnchors() } #endif // OCULUS_SUPPORTED } + + private void OnConnectionHandlerDisconnected() + { + m_LocalPlayer = null;// Clean up local player reference + m_RemotePlayers.Clear();// Clean up remote player references + LastError = null; + State = ConnectionState.DISCONNECTED; + StateUpdated?.Invoke(State); + Disconnected?.Invoke();// Invoke the Disconnected event + } + + public void StartSpeaking() + { + m_VoiceManager?.StartSpeaking(); + } + + public void StopSpeaking() + { + m_VoiceManager?.StopSpeaking(); + } + + public bool IsDisconnectable() + { + + return State == ConnectionState.IN_ROOM || State == ConnectionState.IN_LOBBY; + } + + public bool IsConnectable() + { + return State == ConnectionState.INITIALIZED || State == ConnectionState.DISCONNECTED; + } + + public bool CanJoinRoom() + { + return State == ConnectionState.IN_LOBBY; + } + + public bool CanLeaveRoom() + { + return State == ConnectionState.IN_ROOM; + } + + public bool IsUserRoomOwner() + { + return isUserRoomOwner; + } + + public bool IsRemotePlayerStillConnected(int playerId) + { + if (m_RemotePlayers.Any(player => player.PlayerId == playerId)) return true; + return false; + } + + public int? GetNetworkedTimestampMilliseconds() + { + if (State == ConnectionState.IN_ROOM) + { + if (m_Manager != null) return m_Manager.GetNetworkedTimestampMilliseconds(); + } + + return null; + } + + // this only needs to be done once when the room is created + private void UpdateSketchMemoryScriptTimeOffset(ConnectionState state) + { + // Ensure the offset is set only once upon connecting as room owner + if (state == ConnectionState.IN_ROOM + && isUserRoomOwner + && m_NetworkOffsetTimestamp == null) + { + // Capture the current sketch time as the base offset for network synchronization + m_NetworkOffsetTimestamp = (int)(App.Instance.CurrentSketchTime * 1000); + SketchMemoryScript.m_Instance.SetTimeOffsetToAllStacks((int)m_NetworkOffsetTimestamp); + } + + } + + } } + diff --git a/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs b/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs new file mode 100644 index 0000000000..9c45185562 --- /dev/null +++ b/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs @@ -0,0 +1,351 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TiltBrush; +using TMPro; +using UnityEngine; + + +namespace OpenBrush.Multiplayer +{ + public class MultiplayerSceneSync : MonoBehaviour + { + public static MultiplayerSceneSync m_Instance; + public Action onLargeDataReceived; + [HideInInspector] public int batchSize = 10; + [HideInInspector] public float delayBetweenBatches = 0.05f; + public SyncType m_SyncType = SyncType.Strokes; + [HideInInspector] public int numberOfCommandsExpected = 0; + [HideInInspector] public int numberOfCommandsSent = 0; + + private bool _isWaiting = false; + private bool _isSendingCommandHistory = false; + + + void Awake() + { + m_Instance = this; + } + + void Start() + { + onLargeDataReceived += OnLargeDataReceived; + } + + private void Update() + { + ProcessQueue(); + } + + void OnDestroy() + { + onLargeDataReceived -= OnLargeDataReceived; + } + + public void StartSyncronizationForUser(int id) + { + + switch (m_SyncType) + { + case SyncType.Strokes: + SendStrokesToPlayer(id); + break; + case SyncType.Commands: + StartCoroutine(SendCommandHistory(id)); + break; + } + + } + + #region Syncronization Logic Strokes + async void SendStrokesToPlayer(int id) + { + LinkedList strokes = SketchMemoryScript.m_Instance.GetMemoryList; + + if (strokes.Count == 0) return; + + SendCurrentTargetEnvironmentCommand(); + StartSyncProgressDisplayForSrokes(id, strokes); + const int chunkSize = 5; + List strokeList = strokes.ToList(); + + int counter = 0; + for (int i = 0; i < strokeList.Count; i += chunkSize) + { + var chunk = strokeList.Skip(i).Take(chunkSize).ToList(); + byte[] strokesData = await MultiplayerStrokeSerialization.SerializeAndCompressMemoryListAsync(chunk); + MultiplayerManager.m_Instance.SendLargeDataToPlayer(id, strokesData); + counter += chunk.Count; + //Debug.Log($"Sent {strokesData.Length} bytes of serialized stroke data (batch {(i / chunkSize) + 1}) to player {id}."); + } + } + + async void DeserializeReceivedStrokes(byte[] largeData) + { + + // Decompress and deserialize strokes asynchronously + List strokes = await MultiplayerStrokeSerialization.DecompressAndDeserializeMemoryListAsync(largeData); + + Debug.Log($"Successfully deserialized {strokes.Count} strokes."); + + // Handle the strokes (e.g., add them to the scene or memory) + foreach (var stroke in strokes) + { + BrushStrokeCommand c = new BrushStrokeCommand(stroke); + SketchMemoryScript.m_Instance.MemoryListAdd(stroke); + SketchMemoryScript.m_Instance.PerformAndRecordNetworkCommand(c, true); + } + + } + + void OnLargeDataReceived(byte[] largeData) + { + //Debug.Log($"[Multiplayer Scene Sync]Successfully received {largeData.Length} bytes from the autosave."); + + DeserializeReceivedStrokes(largeData); + } + + #endregion + + #region Syncronization Logic Commands + public void SendCurrentTargetEnvironmentCommand() + { + TiltBrush.Environment targetEnvironment = SceneSettings.m_Instance.GetDesiredPreset(); + + if (targetEnvironment != null) + { + SwitchEnvironmentCommand command = new SwitchEnvironmentCommand(targetEnvironment); + MultiplayerManager.m_Instance.OnCommandPerformed(command); + } + } + + public IEnumerator SendCommandHistory(int id) + { + if (_isWaiting) yield break; + + if (_isSendingCommandHistory) + { + _isWaiting = true; + while (_isSendingCommandHistory) + { + yield return null; + } + _isWaiting = false; + } + + _isSendingCommandHistory = true; + + + List strokesWithoutCommand = SketchMemoryScript.m_Instance.GetStrokesWithoutCommand(); + IEnumerable commands = SketchMemoryScript.m_Instance.GetAllOperations(); + + int firstCommandTimestamp = commands.Any() ? commands.First().NetworkTimestamp ?? int.MaxValue : int.MaxValue; + + CreateBrushStrokeCommands(strokesWithoutCommand, firstCommandTimestamp); // this add the strokes without commands to the IEnumerable commands + + if (commands.Count() == 0) yield break; + + SendCurrentTargetEnvironmentCommand(); + + StartSyncProgressDisplayForCommands(id, commands.ToList()); + + foreach (BaseCommand command in commands) MultiplayerManager.m_Instance.OnCommandPerformed(command); + + _isSendingCommandHistory = false; + + } + + private void CreateBrushStrokeCommands(List strokes, int LastTimestamp) + { + if (strokes == null || strokes.Count == 0) return; + + strokes = strokes.OrderBy(s => s.HeadTimestampMs).ToList(); + + uint earliestStrokeTimestampMs = strokes.First().HeadTimestampMs; + uint latestStrokeTimestampMs = strokes.Last().TailTimestampMs; + uint totalStrokeTimeMs = latestStrokeTimestampMs - earliestStrokeTimestampMs; + + if (totalStrokeTimeMs == 0) totalStrokeTimeMs = 1; + + foreach (var stroke in strokes) + { + uint strokeTimeMs = stroke.HeadTimestampMs - earliestStrokeTimestampMs; + long numerator = (long)strokeTimeMs * (LastTimestamp - 1); + int timestamp = (int)(numerator / totalStrokeTimeMs); + + if (timestamp >= LastTimestamp) + { + timestamp = LastTimestamp - 1; + } + + BrushStrokeCommand command = new BrushStrokeCommand(stroke, Guid.NewGuid(), timestamp); + SketchMemoryScript.m_Instance.AddCommandToNetworkStack(command); + } + } + + #endregion + + #region Remote infoCard commands + + public async void StartSyncProgressDisplayForSrokes(int TargetPlayerId, LinkedList strokes) + { + StartSynchHistory(TargetPlayerId); + + int sentStrokes = 0; + + foreach (var stroke in strokes) + { + + while (await MultiplayerManager.m_Instance.CheckStrokeReception(stroke, TargetPlayerId)) + { + await Task.Delay(200); + } + + sentStrokes++; + SynchHistoryPercentage(TargetPlayerId, strokes.Count, sentStrokes); + } + + SynchHistoryComplete(TargetPlayerId); + } + + public async void StartSyncProgressDisplayForCommands(int TargetPlayerId, List commands) + { + StartSynchHistory(TargetPlayerId); + + int sentStrokes = 0; + foreach (var command in commands) + { + while (await MultiplayerManager.m_Instance.CheckCommandReception(command, TargetPlayerId)) + { + await Task.Delay(200); + } + sentStrokes++; + SynchHistoryPercentage(TargetPlayerId, commands.Count, sentStrokes); + } + + SynchHistoryComplete(TargetPlayerId); + } + + private void StartSynchHistory(int id) + { + MultiplayerManager.m_Instance.StartSynchHistory(id); + } + + private void SynchHistoryPercentage(int id, int expected, int sent) + { + MultiplayerManager.m_Instance.SynchHistoryPercentage(id, expected, sent); + } + + private void SynchHistoryComplete(int id) + { + MultiplayerManager.m_Instance.SynchHistoryComplete(id); + } + + + #endregion + + #region Local infoCard commands + + private readonly object infoCardLock = new object(); + private ConcurrentQueue messageQueue = new ConcurrentQueue(); + private InfoCardAnimation infoCard; + + private void EnqueueMessage(string message) + { + messageQueue.Enqueue(message); + } + + private void ProcessQueue() //once per frame + { + if (messageQueue.TryDequeue(out string message)) + { + if (infoCard == null) + { + DisplaySynchInfo(message); + } + else + { + UpdateInfoCard(message); + } + } + } + + private void DisplaySynchInfo(string text) + { + if (infoCard == null) + { + OutputWindowScript.m_Instance.CreateInfoCardAtController( + InputManager.ControllerName.Brush, + text, + fPopScalar: 1.0f + ); + infoCard = RetrieveInfoCard(); + } + else + { + UpdateInfoCard(text); + } + } + + private void UpdateInfoCard(string text) + { + infoCard.GetComponentInChildren().text = text; + infoCard.UpdateHoldingDuration(5f); + } + + private InfoCardAnimation RetrieveInfoCard() + { + InfoCardAnimation[] allInfoCards = FindObjectsOfType(); + foreach (var card in allInfoCards) + { + TextMeshPro textComponent = card.GetComponentInChildren(); + if (textComponent != null && textComponent.text.Contains("Sync")) + { + return card; + } + } + return null; + } + + public void StartSynchInfo() + { + EnqueueMessage("Sync Started!"); + } + public void SynchInfoPercentageUpdate() + { + int percentage = (int)((float)SketchMemoryScript.AllStrokesCount() / numberOfCommandsExpected * 100); + EnqueueMessage($"Sync {percentage}%"); + } + + public void HideSynchInfo() + { + EnqueueMessage("Sync Ended!"); + } + + #endregion + + } + + public enum SyncType + { + Strokes, + Commands + } +} \ No newline at end of file diff --git a/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs.meta b/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs.meta new file mode 100644 index 0000000000..b3b7a5b0c1 --- /dev/null +++ b/Assets/Scripts/Multiplayer/MultiplayerSceneSync.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a751437a9d2b2724584655aaead0ddfe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs b/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs new file mode 100644 index 0000000000..be8cf21d71 --- /dev/null +++ b/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs @@ -0,0 +1,162 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using UnityEngine; +using TiltBrush; +using System.Threading.Tasks; +using System.Linq; + +namespace OpenBrush.Multiplayer +{ + public static class MultiplayerStrokeSerialization + { + public static async Task SerializeAndCompressMemoryListAsync(List memoryList) + { + byte[] serializedData = await SerializeMemoryList(memoryList); + return await Compress(serializedData); + } + + public static async Task> DecompressAndDeserializeMemoryListAsync(byte[] compressedData) + { + byte[] decompressedData = await Decompress(compressedData); + return await DeserializeMemoryList(decompressedData); + } + + // Serializes a LinkedList of Strokes into a byte array using SketchWriter. + // We did not event anything new we are using SketchWriter.WriteMemory from TiltBrush. + public static async Task SerializeMemoryList(List strokeList) + { + try + { + var strokeSnapshots = SketchWriter.EnumerateAdjustedSnapshots(strokeList).ToList(); + using (var memoryStream = new MemoryStream()) + { + SketchWriter.WriteMemory(memoryStream, strokeSnapshots, new GroupIdMapping()); + Debug.Log($"Serialization complete. Serialized data size: {memoryStream.Length} bytes."); + return memoryStream.ToArray(); + } + } + catch (Exception ex) + { + Debug.LogError($"Error during serialization: {ex.Message}"); + throw; + } + } + + // Deserializes a byte array into a List of Strokes using SketchWriter. + // We did not event anything new we are using SketchWriter.GetStrokes from TiltBrush. + public static async Task> DeserializeMemoryList(byte[] data) + { + try + { + using (var memoryStream = new MemoryStream(data)) + { + var oldGroupToNewGroup = new Dictionary(); + var strokes = SketchWriter.GetStrokes(memoryStream, allowFastPath: true); + + if (strokes != null) + { + Debug.Log($"Successfully deserialized {strokes.Count} strokes from network."); + return strokes; + } + else + { + Debug.LogError("Failed to deserialize strokes."); + return null; + } + } + } + catch (Exception ex) + { + Debug.LogError($"Error during deserialization: {ex.Message}"); + throw; + } + } + + public static Guid[] GetBrushGuidsFromManifest() + { + // List to store brush GUIDs + List brushGuids = new List(); + + // Iterate through each unique brush in the manifest + foreach (BrushDescriptor brush in App.Instance.ManifestFull.UniqueBrushes()) + { + if (brush != null) + { + // Add the brush GUID to the list + brushGuids.Add(brush.m_Guid); + Debug.Log($"Brush: {brush.name}, GUID: {brush.m_Guid}"); + } + else + { + Debug.LogWarning("Encountered a null brush descriptor."); + } + } + + return brushGuids.ToArray(); + } + + // Compresses a byte array using Brotli. + public static async Task Compress(byte[] data) + { + try + { + return await Task.Run(() => + { + using var outputStream = new MemoryStream(); + using var brotliStream = new BrotliStream(outputStream, CompressionMode.Compress, leaveOpen: true); + + brotliStream.Write(data, 0, data.Length); + brotliStream.Flush(); + + Debug.Log($"Compression complete. Compressed data size: {outputStream.Length} bytes."); + + return outputStream.ToArray(); + }); + } + catch (Exception ex) + { + Debug.LogError($"Error during compression: {ex.Message}"); + throw; + } + } + + // Decompresses a Brotli-compressed byte array. + public static async Task Decompress(byte[] compressedData) + { + try + { + return await Task.Run(() => + { + using var input = new MemoryStream(compressedData); + using var brotli = new BrotliStream(input, CompressionMode.Decompress); + using var output = new MemoryStream(); + brotli.CopyTo(output); + Debug.Log($"Decompression complete. Decompressed data size: {output.Length} bytes."); + return output.ToArray(); + }); + } + catch (Exception ex) + { + Debug.LogError($"Error during decompression: {ex.Message}"); + throw; + } + } + + } +} diff --git a/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs.meta b/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs.meta new file mode 100644 index 0000000000..23af851873 --- /dev/null +++ b/Assets/Scripts/Multiplayer/MultiplayerStrokeSerialization.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28356a88a4666d446ba7b0510b0d2620 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs b/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs new file mode 100644 index 0000000000..365c0b0523 --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs @@ -0,0 +1,42 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#if FUSION_WEAVER + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace OpenBrush.Multiplayer +{ + public static class NetworkingConstants + { + // Maximum capacity for NetworkedStroke's NetworkArrays + public const int MaxControlPointsPerChunk = 10; + + // each control point is 36 bytes: + + // public Vector3 m_Pos 12 bytes (3 floats x 4 bytes each) + // public Quaternion m_Orient 16 bytes (4 floats x 4 bytes each) + // public float m_Pressure 4 bytes + // public uint m_TimestampMs 4 bytes + + // Given the maximum payload size of 512 bytes for Fusion RPCs + // (let's assume approximately 50 bytes for overhead) + // we can fit 12 control points in a single RPC + + } +} + +#endif // FUSION_WEAVER diff --git a/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs.meta b/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs.meta new file mode 100644 index 0000000000..d3b014b699 --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/NetworkingConstants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47b83bde77ea0944890c05128ca9f8a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonManager.cs b/Assets/Scripts/Multiplayer/Photon/PhotonManager.cs index 579b06bc88..dbcea03c33 100644 --- a/Assets/Scripts/Multiplayer/Photon/PhotonManager.cs +++ b/Assets/Scripts/Multiplayer/Photon/PhotonManager.cs @@ -12,158 +12,388 @@ // See the License for the specific language governing permissions and // limitations under the License. -#if FUSION_WEAVER +#if MP_PHOTON using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using UnityEngine; using Fusion; using Fusion.Photon.Realtime; using Fusion.Sockets; using TiltBrush; -using System.Linq; +using UnityEditor; +using UnityEngine.SceneManagement; + namespace OpenBrush.Multiplayer { - public class PhotonManager : IConnectionHandler, INetworkRunnerCallbacks + public class PhotonManager : IDataConnectionHandler, INetworkRunnerCallbacks { - private NetworkRunner m_Runner; - MultiplayerManager m_Manager; - - List m_PlayersSpawning; + private NetworkRunner m_Runner; + private MultiplayerManager m_Manager; + private List m_PlayersSpawning; + private PhotonPlayerRig m_LocalPlayer; + private FusionAppSettings m_PhotonAppSettings; + private int sequenceNumber = 0; + public event Action Disconnected; - PhotonPlayerRig m_LocalPlayer; + public ConnectionUserInfo UserInfo { get; set; } + public ConnectionState State { get; private set; } + public string LastError { get; private set; } public PhotonManager(MultiplayerManager manager) { m_Manager = manager; m_PlayersSpawning = new List(); + + Init(); + + m_PhotonAppSettings = new FusionAppSettings + { + AppIdFusion = App.Config.PhotonFusionSecrets.ClientId, + FixedRegion = "", + }; } - public async Task Connect() + public async Task Init() { - if(m_Runner != null) + try { - GameObject.Destroy(m_Runner); + State = ConnectionState.INITIALIZING; + var runnerGO = new GameObject("Photon Network Components"); + m_Runner = runnerGO.AddComponent(); + m_Runner.gameObject.AddComponent(); + m_Runner.ProvideInput = true; + m_Runner.AddCallbacks(this); + + Log.LogLevel = Fusion.LogType.Error; + + } + catch (Exception ex) + { + State = ConnectionState.ERROR; + LastError = $"[PhotonManager] Failed to Initialize lobby: {ex.Message}"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + return false; } - var runnerGO = new GameObject("Photon Network Components"); + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonManager] Runner Initialized"); + State = ConnectionState.INITIALIZED; + return true; + } - m_Runner = runnerGO.AddComponent(); - m_Runner.ProvideInput = true; - m_Runner.AddCallbacks(this); + public void Update() + { + var copy = m_PlayersSpawning.ToList(); + foreach (var player in copy) + { + var newPlayer = m_Runner.GetPlayerObject(player); + if (newPlayer != null) + { + m_Manager.remotePlayerJoined?.Invoke(player.RawEncoded, newPlayer.GetComponent()); + m_PlayersSpawning.Remove(player); + } + } + } + + #region IConnectionHandler Methods + + public async Task Connect() + { + State = ConnectionState.CONNECTING; + + await Task.Yield(); + + var result = await m_Runner.JoinSessionLobby(SessionLobby.Shared, customAppSettings: m_PhotonAppSettings); - var appSettings = new AppSettings + if (result.Ok) { - AppIdFusion = App.Config.PhotonFusionSecrets.ClientId, - // Need this set for some reason - FixedRegion = "", - }; + State = ConnectionState.IN_LOBBY; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonManager] Connected to lobby"); + } + else + { + State = ConnectionState.ERROR; + LastError = $"[PhotonManager] Failed to join lobby: {result.ErrorMessage}"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + } + + return result.Ok; + } + + public async Task JoinRoom(RoomCreateData roomCreateData) + { + + if (m_Runner == null) Init(); + + State = ConnectionState.JOINING_ROOM; + + var sceneRef = SceneRef.FromIndex(SceneManager.GetActiveScene().buildIndex); + + var sceneInfo = new NetworkSceneInfo(); + sceneInfo.AddSceneRef(sceneRef, LoadSceneMode.Single); var args = new StartGameArgs() { GameMode = GameMode.Shared, - SessionName = "OpenBrushMultiplayerTest", - CustomPhotonAppSettings = appSettings, - SceneManager = m_Runner.gameObject.AddComponent(), - Scene = UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex, + SessionName = roomCreateData.roomName, + CustomPhotonAppSettings = m_PhotonAppSettings, + PlayerCount = roomCreateData.maxPlayers != 0 ? roomCreateData.maxPlayers : null, + SceneManager = m_Runner.gameObject.GetComponent(), + Scene = sceneInfo, // Pass the configured NetworkSceneInfo }; var result = await m_Runner.StartGame(args); + //m_Runner.ReliableDataSendRate = 60; + //m_Runner.Config.Network.ReliableDataTransferModes = NetworkConfiguration.ReliableDataTransfers.ClientToClientWithServerProxy; + + if (result.Ok) + { + // Verify if the room is actually full + int currentPlayerCount = m_Runner.SessionInfo.PlayerCount; + int? maxPlayerCount = m_Runner.SessionInfo.MaxPlayers; + maxPlayerCount = maxPlayerCount == null ? int.MaxValue : maxPlayerCount; + + if (currentPlayerCount >= maxPlayerCount) + { + State = ConnectionState.ERROR; + LastError = "[PhotonManager] Room is full."; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + Disconnect(); + return false; + } + + State = ConnectionState.IN_ROOM; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonManager] Joined Room"); + UserInfo = new ConnectionUserInfo { + Nickname = UserInfo.Nickname, + UserId = m_Runner.UserId, + Role = UserInfo.Role, + }; + } + else + { + State = ConnectionState.ERROR; + LastError = $"[PhotonManager] Failed to join Room: {result.ErrorMessage}"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + } return result.Ok; - + } - public bool IsConnected() + public async Task Disconnect() { - if(m_Runner == null) + State = ConnectionState.DISCONNECTING; + + if (m_Runner != null) { - return false; + + if (m_LocalPlayer != null) + { + m_Runner.Despawn(m_LocalPlayer.Object); + m_LocalPlayer = null; + } + m_PlayersSpawning.Clear(); + + await m_Runner.Shutdown(forceShutdownProcedure: false); + GameObject.Destroy(m_Runner.gameObject); + + if (m_Runner.IsShutdown) + { + State = ConnectionState.DISCONNECTED; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonManager] Disconnected successfully"); + UserInfo = new ConnectionUserInfo + { + Nickname = UserInfo.Nickname, + UserId = m_Runner.UserId, + Role = UserInfo.Role, + }; + } + else + { + State = ConnectionState.ERROR; + LastError = $"[PhotonManager] Failed to disconnect"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + } + + return m_Runner.IsShutdown; } - return m_Runner.IsRunning; + return true; } - public async Task Disconnect(bool force) + public async Task LeaveRoom(bool force) { - if(m_Runner != null) + + if (m_Runner != null) { - await m_Runner.Shutdown(forceShutdownProcedure: force); - return m_Runner.IsShutdown; + bool success = await Disconnect(); + if (!success) return false; + success = await Connect(); + if (!success) return false; + return true; } - return true; + return false; + } - public void Update() + #endregion + + #region IDataConnectionHandler Methods + + public int GetPlayerCount() { - var copy = m_PlayersSpawning.ToList(); - foreach (var player in copy) + if (m_Runner != null) { - var newPlayer = m_Runner.GetPlayerObject(player); - if (newPlayer != null) - { - m_Manager.remotePlayerJoined?.Invoke(newPlayer.GetComponent()); - m_PlayersSpawning.Remove(player); - } + return m_Runner.SessionInfo.PlayerCount; } + return 0; + } + + public int GetNetworkedTimestampMilliseconds() + { + int tickRate = m_Runner.TickRate; // Access TickRate from Config directly + int networkTimeMilliseconds = (int)((m_Runner.Tick * 1000) / (double)tickRate); // Use m_Runner.Tick directly + return networkTimeMilliseconds; + } + + public bool GetPlayerRoomOwnershipStatus(int playerId) + { + var remotePlayer = m_PlayersSpawning + .Select(playerRef => m_Runner.GetPlayerObject(playerRef)?.GetComponent()) + .FirstOrDefault(playerRig => playerRig != null && playerRig.PlayerId == playerId); + + if (remotePlayer != null && remotePlayer.Object != null && remotePlayer.Object.IsValid) + return remotePlayer.IsRoomOwner; + else return false; } -#region IConnectionHandler Methods public async Task PerformCommand(BaseCommand command) { await Task.Yield(); - return ProcessCommand(command);; + return ProcessCommand(command); + } + + public async Task SendCommandToPlayer(BaseCommand command, int playerId) + { + await Task.Yield(); + PlayerRef playerRef = PlayerRef.FromEncoded(playerId); + return ProcessCommand(command, playerRef); + } + + public async Task CheckCommandReception(BaseCommand command, int playerId) + { + PlayerRef targetPlayer = PlayerRef.FromEncoded(playerId); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_CheckCommand(m_Runner, command.Guid, m_Runner.LocalPlayer, targetPlayer); }); + return await PhotonRPC.WaitForAcknowledgment(command.Guid); + } + + public async Task CheckStrokeReception(Stroke stroke, int playerId) + { + PlayerRef targetPlayer = PlayerRef.FromEncoded(playerId); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_CheckStroke(m_Runner, stroke.m_Guid, m_Runner.LocalPlayer, targetPlayer); }); + return await PhotonRPC.WaitForAcknowledgment(stroke.m_Guid); } public async Task UndoCommand(BaseCommand command) { - PhotonRPC.RPC_Undo(m_Runner, command.GetType().ToString()); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_Undo(m_Runner, command.GetType().ToString()); }); await Task.Yield(); return true; } public async Task RedoCommand(BaseCommand command) { - PhotonRPC.RPC_Redo(m_Runner, command.GetType().ToString()); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_Redo(m_Runner, command.GetType().ToString());}); await Task.Yield(); return true; } public async Task RpcSyncToSharedAnchor(string uuid) { - PhotonRPC.RPC_SyncToSharedAnchor(m_Runner, uuid); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_SyncToSharedAnchor(m_Runner, uuid); }); + await Task.Yield(); + return true; + } + + public async Task RpcStartSyncHistory(int id) + { + PlayerRef playerRef = PlayerRef.FromEncoded(id); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_StartHistorySync(m_Runner, playerRef); }); + await Task.Yield(); + return true; + } + + public async Task RpcHistorySyncComplete(int id) + { + PlayerRef playerRef = PlayerRef.FromEncoded(id); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_HistorySyncCompleted(m_Runner, playerRef);}); + await Task.Yield(); + return true; + } + + public async Task RpcSyncHistoryPercentage(int id, int exp, int snt) + { + PlayerRef playerRef = PlayerRef.FromEncoded(id); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.RPC_HistoryPercentageUpdate(m_Runner, playerRef, exp, snt);}); await Task.Yield(); return true; } -#endregion -#region Command Methods - private bool ProcessCommand(BaseCommand command) + public void SendLargeDataToPlayer(int playerId, byte[] largeData) + { + sequenceNumber++; + PlayerRef playerRef = PlayerRef.FromEncoded(playerId); + int dataHash = largeData.GetHashCode(); + var key = ReliableKey.FromInts(playerId, sequenceNumber, dataHash, 0); + m_Runner.SendReliableDataToPlayer(playerRef, key, largeData); + } + + #endregion + + #region Command Methods + private bool ProcessCommand(BaseCommand command, PlayerRef playerRef = default) { bool success = true; - switch(command) + + switch (command) { case BrushStrokeCommand: - success = CommandBrushStroke(command as BrushStrokeCommand); + success &= CommandBrushStroke(command as BrushStrokeCommand, playerRef); break; case DeleteStrokeCommand: - success = CommandDeleteStroke(command as DeleteStrokeCommand); + success &= CommandDeleteStroke(command as DeleteStrokeCommand, playerRef); + break; + case SwitchEnvironmentCommand: + success &= CommandSwitchEnvironment(command as SwitchEnvironmentCommand, playerRef); break; case BaseCommand: - success = CommandBase(command); + success &= CommandBase(command); break; default: - // Don't know how to process this command success = false; break; } - if(command.ChildrenCount > 0) + if (command.ChildrenCount > 0) { - foreach(var child in command.Children) + foreach (var child in command.Children) { + if (child.ParentGuid == Guid.Empty) + { + child.SetParent(command); + } success &= ProcessCommand(child); } } @@ -171,110 +401,193 @@ private bool ProcessCommand(BaseCommand command) return success; } - private bool CommandBrushStroke(BrushStrokeCommand command) + private bool CommandBrushStroke(BrushStrokeCommand command, PlayerRef playerRef = default) { var stroke = command.m_Stroke; + int maxPointsPerChunk = NetworkingConstants.MaxControlPointsPerChunk; - if (stroke.m_ControlPoints.Length > 128) - { - // Split and Send - int numSplits = stroke.m_ControlPoints.Length / 128; + int totalPoints = stroke.m_ControlPoints.Length; - var firstStroke = new Stroke(stroke) - { - m_ControlPoints = stroke.m_ControlPoints.Take(128).ToArray(), - m_ControlPointsToDrop = stroke.m_ControlPointsToDrop.Take(128).ToArray() - }; + // Calculate how many chunks in total we need, including the initial one. + int numberOfChunks = (int)Math.Ceiling((double)totalPoints / maxPointsPerChunk); - var netStroke = new NetworkedStroke().Init(firstStroke); + // If we can fit everything in a single message: + if (numberOfChunks == 1) + { + // Send it all at once as a full stroke + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_BrushStrokeFull( m_Runner,new NetworkedStroke().Init(stroke),command.Guid, (int)command.NetworkTimestamp, command.ParentGuid, command.ChildrenCount ); }); + return true; + } - var strokeGuid = Guid.NewGuid(); + // More than one chunk: break it down. - // First Stroke - PhotonRPC.RPC_BrushStrokeBegin(m_Runner, strokeGuid, netStroke, stroke.m_ControlPoints.Length); + // Prepare the first chunk + int firstChunkSize = Math.Min(maxPointsPerChunk, totalPoints); + var firstStroke = new Stroke(stroke) + { + m_ControlPoints = stroke.m_ControlPoints.Take(firstChunkSize).ToArray(), + m_ControlPointsToDrop = stroke.m_ControlPointsToDrop.Take(firstChunkSize).ToArray() + }; - // Middle - for (int rounds = 1; rounds < numSplits + 1; ++rounds) - { - var controlPoints = stroke.m_ControlPoints.Skip(rounds*128).Take(128).ToArray(); - var dropPoints = stroke.m_ControlPointsToDrop.Skip(rounds*128).Take(128).ToArray(); + var netStroke = new NetworkedStroke().Init(firstStroke); + var strokeGuid = Guid.NewGuid(); - var netControlPoints = new NetworkedControlPoint[controlPoints.Length]; + // Send the initial Begin call + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_BrushStrokeBegin( m_Runner, strokeGuid, netStroke, totalPoints);}); - for (int point = 0; point < controlPoints.Length; ++ point) - { - netControlPoints[point] = new NetworkedControlPoint().Init(controlPoints[point]); - } + // Send the middle "Continue" chunks (if any) + for (int chunkIndex = 1; chunkIndex < numberOfChunks; chunkIndex++) + { + int offset = chunkIndex * maxPointsPerChunk; + int chunkSize = Math.Min(maxPointsPerChunk, totalPoints - offset); + + // Extract this chunk of control points and drop flags + var controlPoints = stroke.m_ControlPoints.Skip(offset).Take(chunkSize).ToArray(); + var dropPoints = stroke.m_ControlPointsToDrop.Skip(offset).Take(chunkSize).ToArray(); - PhotonRPC.RPC_BrushStrokeContinue(m_Runner, strokeGuid, rounds * 128, netControlPoints, dropPoints); + // Convert to NetworkedControlPoint + var netControlPoints = new NetworkedControlPoint[chunkSize]; + for (int i = 0; i < chunkSize; ++i) + { + netControlPoints[i] = new NetworkedControlPoint().Init(controlPoints[i]); } - // End - PhotonRPC.RPC_BrushStrokeComplete(m_Runner, strokeGuid, command.Guid, command.ParentGuid, command.ChildrenCount); - } - else - { - // Can send in one. - PhotonRPC.RPC_BrushStrokeFull(m_Runner, new NetworkedStroke().Init(command.m_Stroke), command.Guid, command.ParentGuid, command.ChildrenCount); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_BrushStrokeContinue(m_Runner,strokeGuid, offset,netControlPoints,dropPoints);}); } + + // After all chunks have been sent, send the Complete call + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_BrushStrokeComplete( m_Runner,strokeGuid, command.Guid, (int)command.NetworkTimestamp, command.ParentGuid, command.ChildrenCount ); }); + return true; } + private bool CommandBase(BaseCommand command) { - PhotonRPC.RPC_BaseCommand(m_Runner, command.Guid, command.ParentGuid, command.ChildrenCount); + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_BaseCommand(m_Runner, command.Guid, command.ParentGuid, command.ChildrenCount); }); + return true; + } + + private bool CommandDeleteStroke(DeleteStrokeCommand command, PlayerRef playerRef = default) + { + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_DeleteStroke(m_Runner, command.m_TargetStroke.m_Seed, command.Guid, (int)command.NetworkTimestamp, command.ParentGuid, command.ChildrenCount, playerRef); }); return true; } - private bool CommandDeleteStroke(DeleteStrokeCommand command) + private bool CommandSwitchEnvironment(SwitchEnvironmentCommand command, PlayerRef playerRef = default) { - PhotonRPC.RPC_DeleteStroke(m_Runner, command.m_TargetStroke.m_Seed, command.Guid, command.ParentGuid, command.ChildrenCount); + Guid environmentGuid = command.m_NextEnvironment.m_Guid; + PhotonRPCBatcher.EnqueueRPC(() => + { PhotonRPC.Send_SwitchEnvironment(m_Runner, environmentGuid, command.Guid, (int)command.NetworkTimestamp, command.ParentGuid, command.ChildrenCount, playerRef); }); return true; } -#endregion + #endregion + + #region Photon Callbacks -#region Photon Callbacks public void OnConnectedToServer(NetworkRunner runner) { - var rpc = m_Runner.gameObject.AddComponent(); - m_Runner.AddSimulationBehaviour(rpc); + var rpc = runner.gameObject.AddComponent(); } public void OnPlayerJoined(NetworkRunner runner, PlayerRef player) { - if(player == m_Runner.LocalPlayer) + + try { - var playerPrefab = Resources.Load("Multiplayer/Photon/PhotonPlayerRig") as GameObject; - var playerObj = m_Runner.Spawn(playerPrefab, inputAuthority: m_Runner.LocalPlayer); - m_LocalPlayer = playerObj.GetComponent(); - m_Runner.SetPlayerObject(m_Runner.LocalPlayer, playerObj); - - m_Manager.localPlayerJoined?.Invoke(m_LocalPlayer); + if (player == m_Runner.LocalPlayer) + { + var playerPrefab = Resources.Load("Multiplayer/Photon/PhotonPlayerRig") as GameObject; + var playerObj = m_Runner.Spawn(playerPrefab, inputAuthority: m_Runner.LocalPlayer); + m_LocalPlayer = playerObj.GetComponent(); + m_Runner.SetPlayerObject(m_Runner.LocalPlayer, playerObj); + m_Manager.localPlayerJoined?.Invoke(player.RawEncoded, m_LocalPlayer); + } + else + { + m_PlayersSpawning.Add(player); + } } - else + catch (Exception ex) + { + Debug.LogError($"Exception in OnPlayerJoined: {ex.Message}"); + } + } + + public void OnPlayerLeft(NetworkRunner runner, PlayerRef player) + { + m_Manager.playerLeft?.Invoke(player.RawEncoded); + } + + public void OnSessionListUpdated(NetworkRunner runner, List sessionList) + { + var roomData = new List(); + foreach (var session in sessionList) + { + RoomData data = new RoomData() + { + roomName = session.Name, + @private = session.IsOpen, + numPlayers = session.PlayerCount, + maxPlayers = session.MaxPlayers + }; + + roomData.Add(data); + } + + m_Manager.roomDataRefreshed?.Invoke(roomData); + } + + public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ReliableKey key, ArraySegment data) + { + //Debug.Log("Server received complete reliable data"); + + byte[] receivedData = data.Array; + if (receivedData == null || receivedData.Length == 0) { - m_PlayersSpawning.Add(player); + Debug.LogWarning("Received data is null or empty."); + return; } + + MultiplayerSceneSync.m_Instance.onLargeDataReceived?.Invoke(receivedData); + } + + public void OnReliableDataProgress(NetworkRunner runner, PlayerRef player, ReliableKey key, float progress) + { + + //Debug.Log("Server received Partial reliable data"); } -#endregion -#region Unused Photon Callbacks - public void OnPlayerLeft(NetworkRunner runner, PlayerRef player) { } - public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason) { } + #endregion + + #region Unused Photon Callbacks + public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason) + { + Disconnected?.Invoke(); + } public void OnDisconnectedFromServer(NetworkRunner runner) { } public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason) { } public void OnInput(NetworkRunner runner, NetworkInput input) { } public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input) { } public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token) { } public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message) { } - public void OnSessionListUpdated(NetworkRunner runner, List sessionList) { } public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary data) { } public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken) { } public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ArraySegment data) { } public void OnSceneLoadDone(NetworkRunner runner) { } public void OnSceneLoadStart(NetworkRunner runner) { } -#endregion + public void OnObjectExitAOI(NetworkRunner runner, NetworkObject obj, PlayerRef player) { } + public void OnObjectEnterAOI(NetworkRunner runner, NetworkObject obj, PlayerRef player) { } + public void OnDisconnectedFromServer(NetworkRunner runner, NetDisconnectReason reason) { } + + #endregion } } diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonPlayerRig.cs b/Assets/Scripts/Multiplayer/Photon/PhotonPlayerRig.cs index 40a9e81912..6e6f167d89 100644 --- a/Assets/Scripts/Multiplayer/Photon/PhotonPlayerRig.cs +++ b/Assets/Scripts/Multiplayer/Photon/PhotonPlayerRig.cs @@ -17,6 +17,9 @@ using UnityEngine; using Fusion; using TiltBrush; +using System; +using System.Collections; +using TMPro; namespace OpenBrush.Multiplayer { @@ -33,33 +36,108 @@ public class PhotonPlayerRig : NetworkBehaviour, ITransientData [Networked] private float brushSize { get; set; } [Networked] private NetworkString<_64> brushGuid { get; set; } [Networked] public ulong oculusPlayerId { get; set; } + [Networked] public bool IsRoomOwner { get; set; } + [Networked] public float SceneScale { get; set; } + [Networked] public bool isReceivingVoiceTransmission { get; set; } + [Networked] public string Nickname { get; set; } PointerScript transientPointer; // The offset transforms. [SerializeField] private Transform headTransform; + [SerializeField] private Transform rightHandTransform; + [SerializeField] private Transform leftHandTransform; + // The 3D model of the headset + [SerializeField] private Renderer HMDMeshRenderer; + // The Nickname of the player + [SerializeField] private TextMeshPro NicknameText; + private PlayerRigData transmitData; + private Color originalColor; + private Coroutine fadeCoroutine; + + private bool m_IsSpawned = false; + public bool IsSpawned => m_IsSpawned; + + public int m_PlayerId; + + public int PlayerId + { + get { return m_PlayerId; } + set { m_PlayerId = value; } + } + + public GameObject m_LeftControllerModel; + public GameObject m_RightControllerModel; public void TransmitData(PlayerRigData data) { transmitData = data; oculusPlayerId = data.ExtraData.OculusPlayerId; - brushColor = data.BrushData.Color; brushSize = data.BrushData.Size; brushGuid = data.BrushData.Guid; + IsRoomOwner = data.IsRoomOwner; + SceneScale = data.SceneScale; + isReceivingVoiceTransmission = data.isReceivingVoiceTransmission; + Nickname = data.Nickname; } - public PlayerRigData RecieveData() + private void Awake() { - var data = new PlayerRigData + if (HMDMeshRenderer != null && HMDMeshRenderer.material.HasProperty("_EmissionColor")) + { + originalColor = HMDMeshRenderer.material.GetColor("_EmissionColor"); + } + } + + public PlayerRigData ReceiveData() + { + if (!m_IsSpawned) return default; + + var data = new PlayerRigData(); + + if (m_PlayerHead?.transform != null) + { + data.HeadPosition = m_PlayerHead.transform.position; + data.HeadRotation = m_PlayerHead.transform.rotation; + } + + if (m_Tool?.transform != null) + { + data.ToolPosition = m_Tool.transform.position; + data.ToolRotation = m_Tool.transform.rotation; + } + + if (m_Left?.transform != null) + { + data.LeftHandPosition = m_Left.transform.position; + data.LeftHandRotation = m_Left.transform.rotation; + } + + if (m_Right?.transform != null) + { + data.RightHandPosition = m_Right.transform.position; + data.RightHandRotation = m_Right.transform.rotation; + } + + try { - HeadPosition = m_PlayerHead.InterpolationTarget.position, - HeadRotation = m_PlayerHead.InterpolationTarget.rotation, - ExtraData = new ExtraData + data.IsRoomOwner = this.IsRoomOwner; + data.ExtraData = new ExtraData { OculusPlayerId = this.oculusPlayerId }; + data.SceneScale = this.SceneScale; + data.isReceivingVoiceTransmission = this.isReceivingVoiceTransmission; + if (!string.IsNullOrEmpty(this.Nickname)) { - OculusPlayerId = this.oculusPlayerId + data.Nickname = this.Nickname; + NicknameText.text = this.Nickname; } - }; + + } + catch (InvalidOperationException ex) + { + return default; + } + return data; } @@ -69,25 +147,40 @@ public override void Spawned() brushGuid = BrushCatalog.m_Instance.DefaultBrush.m_Guid.ToString(); - if(!Object.HasStateAuthority) + if (!Object.HasStateAuthority) { transientPointer = PointerManager.m_Instance.CreateRemotePointer(); transientPointer.SetBrush(BrushCatalog.m_Instance.DefaultBrush); transientPointer.SetColor(App.BrushColor.CurrentColor); } + else + { + NicknameText.text = ""; + NicknameText.gameObject.SetActive(false); + } + + UpdateControllerVisibility(); + + m_IsSpawned = true; } public override void FixedUpdateNetwork() { base.FixedUpdateNetwork(); - if(Object.HasStateAuthority) + if (Object.HasStateAuthority) { m_PlayerHead.transform.position = transmitData.HeadPosition; m_PlayerHead.transform.rotation = transmitData.HeadRotation; m_Tool.transform.position = transmitData.ToolPosition; m_Tool.transform.rotation = transmitData.ToolRotation; + + m_Left.transform.position = transmitData.LeftHandPosition; + m_Left.transform.rotation = transmitData.LeftHandRotation; + + m_Right.transform.position = transmitData.RightHandPosition; + m_Right.transform.rotation = transmitData.RightHandRotation; } } @@ -97,26 +190,141 @@ public override void Render() if (Object.HasStateAuthority) { + var remoteTR = TrTransform.TR( + m_PlayerHead.transform.position, + m_PlayerHead.transform.rotation + ); + App.Scene.AsScene[headTransform] = remoteTR; } - + else { - var toolTR = TrTransform.TR(m_Tool.InterpolationTarget.position, m_Tool.InterpolationTarget.rotation); + // Remote pointer + var toolTR = TrTransform.TR( + m_Tool.transform.position, + m_Tool.transform.rotation + ); App.Scene.AsScene[transientPointer.transform] = toolTR; transientPointer.SetColor(brushColor); - if(brushGuid.ToString() != string.Empty) + if (brushGuid.ToString() != string.Empty) { transientPointer.SetBrush(BrushCatalog.m_Instance.GetBrush(new System.Guid(brushGuid.ToString()))); } transientPointer.BrushSize01 = brushSize; + + // Calculate the scale based on the scene scale + float clampedSceneScale = Mathf.Clamp(SceneScale, 0.1f, 9.8f); + float Scale = 1 / clampedSceneScale; + + // Remote head + var remoteTR = TrTransform.TRS( + m_PlayerHead.transform.position, + m_PlayerHead.transform.rotation, + Scale + ); + App.Scene.AsScene[headTransform] = remoteTR; + + // Remote left hand + var remoteLeftTR = TrTransform.TRS( + m_Left.transform.position, + m_Left.transform.rotation, + Scale + ); + App.Scene.AsScene[leftHandTransform] = remoteLeftTR; + + // Remote right hand + var remoteRightTR = TrTransform.TRS( + m_Right.transform.position, + m_Right.transform.rotation, + Scale + ); + App.Scene.AsScene[rightHandTransform] = remoteRightTR; + + //HMD color + if (isReceivingVoiceTransmission) FadeHMDMeshColor(Color.red); + else FadeHMDMeshColor(originalColor); + } + } + + public void UpdateControllerVisibility() + { + if (Object.HasStateAuthority) + { + m_LeftControllerModel.SetActive(false); + m_RightControllerModel.SetActive(false); + } + else + { + m_LeftControllerModel.SetActive(true); + m_RightControllerModel.SetActive(true); + } + } + + void OnDestroy() + { + if (transientPointer != null) + { + PointerManager.m_Instance.RemoveRemotePointer(transientPointer); + transientPointer = null; + } + + m_PlayerHead = null; + m_Tool = null; + m_Left = null; + m_Right = null; + + m_IsSpawned = false; + } + + public void UpdateColor(Color color) + { + + if (HMDMeshRenderer != null && HMDMeshRenderer.material.HasProperty("_EmissionColor")) + { + HMDMeshRenderer.material.SetColor("_EmissionColor", color); + } + + if (NicknameText != null) + { + NicknameText.outlineColor = color; } - var remoteTR = TrTransform.TR(m_PlayerHead.InterpolationTarget.position, m_PlayerHead.InterpolationTarget.rotation); - App.Scene.AsScene[headTransform] = remoteTR; + } + + public void FadeHMDMeshColor(Color targetColor) + { + if (fadeCoroutine != null) + { + StopCoroutine(fadeCoroutine); + } + fadeCoroutine = StartCoroutine(FadeColorRoutine(targetColor)); + } + + private IEnumerator FadeColorRoutine(Color targetColor) + { + + if (HMDMeshRenderer == null || + !HMDMeshRenderer.material.HasProperty("_EmissionColor") || + NicknameText == null) yield break; + + Color startColor = HMDMeshRenderer.material.GetColor("_EmissionColor"); + float elapsedTime = 0f; + + while (elapsedTime < 0.2f) + { + elapsedTime += Time.deltaTime; + float t = Mathf.Clamp01(elapsedTime / 0.2f); + Color currentColor = Color.Lerp(startColor, targetColor, t); + UpdateColor(currentColor); + yield return null; + } + + HMDMeshRenderer.material.SetColor("_EmissionColor", targetColor); } } + } #endif // FUSION_WEAVER diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonRPC.cs b/Assets/Scripts/Multiplayer/Photon/PhotonRPC.cs index 8125812a57..5f0ef51085 100644 --- a/Assets/Scripts/Multiplayer/Photon/PhotonRPC.cs +++ b/Assets/Scripts/Multiplayer/Photon/PhotonRPC.cs @@ -13,7 +13,7 @@ // limitations under the License. -#if FUSION_WEAVER +#if MP_PHOTON using System; using System.Linq; @@ -21,6 +21,8 @@ using UnityEngine; using Fusion; using TiltBrush; +using static TiltBrush.SketchControlsScript; +using System.Threading.Tasks; namespace OpenBrush.Multiplayer { @@ -28,11 +30,13 @@ public class PhotonRPC : SimulationBehaviour { private static Dictionary m_inProgressStrokes; private static List m_pendingCommands; + private static Dictionary> m_acknowledgments; public void Awake() { m_inProgressStrokes = new(); m_pendingCommands = new(); + m_acknowledgments = new(); } public void Update() @@ -41,7 +45,7 @@ public void Update() } private bool CheckifChildStillPending(PendingCommand pending) - { + { if (pending.TotalExpectedChildren == pending.Command.ChildrenCount) { bool moreChildrenToAssign = false; @@ -100,19 +104,20 @@ private void TryProcessCommands() } // All children present, begin execution - + m_pendingCommands.RemoveAt(0); InvokePreCommands(command); - - SketchMemoryScript.m_Instance.PerformAndRecordCommand(command.Command, invoke: false); + //SketchMemoryScript.m_Instance.PerformAndRecordCommand(command.Command, invoke: false); + SketchMemoryScript.m_Instance.PerformAndRecordNetworkCommand(command.Command); TryProcessCommands(); } private static void AddPendingCommand(Action preAction, Guid commandGuid, Guid parentGuid, BaseCommand command, int childCount) { + PendingCommand pendingCommand = new PendingCommand(commandGuid, command, preAction, childCount); if (!parentGuid.Equals(default)) @@ -124,6 +129,28 @@ private static void AddPendingCommand(Action preAction, Guid commandGuid, Guid p m_pendingCommands.Add(pendingCommand); } + private static bool CheckifCommandGuidIsInStack(Guid commandGuid) + { + + if (SketchMemoryScript.m_Instance.IsCommandInStack(commandGuid)) + { + //Debug.Log($"Command with Guid {commandGuid} already in stack."); + return true; + } + return false; + } + + private static bool CheckifStrokeGuidIsInMemory(Guid strokeGuid) + { + + if (SketchMemoryScript.m_Instance.IsStrokeInMemory(strokeGuid)) + { + //Debug.Log($"Stroke with Guid {strokeGuid} already in memory."); + return true; + } + return false; + } + private static BaseCommand FindParentCommand(Guid parentGuid) { PendingCommand pendingParent = m_pendingCommands.FirstOrDefault(x => x.Guid == parentGuid); @@ -135,8 +162,144 @@ private static BaseCommand FindParentCommand(Guid parentGuid) return null; } - public static void CreateBrushStroke(Stroke stroke, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + public static void Send_BaseCommand(NetworkRunner runner, Guid commandGuid, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_BaseCommand(runner, commandGuid, parentGuid, childCount); + } + else + { + RPC_BaseCommand(runner, commandGuid, parentGuid, childCount, targetPlayer); + } + } + + private static void BaseCommand(Guid commandGuid, Guid parentGuid = default, int childCount = 0) + { + if (CheckifCommandGuidIsInStack(commandGuid)) return; + + Debug.Log($"Base command child count: {childCount}"); + var parentCommand = FindParentCommand(parentGuid); + var command = new BaseCommand(parent: parentCommand); + + AddPendingCommand(() => { }, commandGuid, parentGuid, command, childCount); + } + + public static void Send_BrushStrokeFull(NetworkRunner runner, NetworkedStroke strokeData, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_BrushStrokeFull(runner, strokeData, commandGuid, timestamp, parentGuid, childCount); + } + else + { + RPC_BrushStrokeFull(runner, strokeData, commandGuid, timestamp, parentGuid, childCount, targetPlayer); + } + } + + private static void BrushStrokeFull(NetworkedStroke strokeData, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + + if (CheckifCommandGuidIsInStack(commandGuid)) return; + + var decode = NetworkedStroke.ToStroke(strokeData); + + CreateBrushStroke(decode, commandGuid, timestamp, parentGuid, childCount); + } + + public static void Send_BrushStrokeBegin(NetworkRunner runner, Guid id, NetworkedStroke strokeData, int finalLength, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_BrushStrokeBegin(runner, id, strokeData, finalLength); + } + else + { + RPC_BrushStrokeBegin(runner, id, strokeData, finalLength, targetPlayer); + } + } + + private static void BrushStrokeBegin(Guid id, NetworkedStroke strokeData, int finalLength) + { + var decode = NetworkedStroke.ToStroke(strokeData); + + decode.m_Type = Stroke.Type.NotCreated; + decode.m_IntendedCanvas = App.Scene.MainCanvas; + + Array.Resize(ref decode.m_ControlPoints, finalLength); + Array.Resize(ref decode.m_ControlPointsToDrop, finalLength); + + if (m_inProgressStrokes.ContainsKey(id)) + { + Debug.LogError("Shouldn't be here!"); + return; + } + + m_inProgressStrokes[id] = decode; + } + + public static void Send_BrushStrokeContinue(NetworkRunner runner, Guid id, int offset, NetworkedControlPoint[] controlPoints, bool[] dropPoints, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_BrushStrokeContinue(runner, id, offset, controlPoints, dropPoints); + } + else + { + RPC_BrushStrokeContinue(runner, id, offset, controlPoints, dropPoints, targetPlayer); + } + } + + private static void BrushStrokeContinue(Guid id, int offset, NetworkedControlPoint[] controlPoints, bool[] dropPoints) { + if (!m_inProgressStrokes.ContainsKey(id)) + { + Debug.LogError("shouldn't be here!"); + return; + } + + var stroke = m_inProgressStrokes[id]; + + for (int i = 0; i < controlPoints.Length; ++i) + { + stroke.m_ControlPoints[offset + i] = NetworkedControlPoint.ToControlPoint(controlPoints[i]); + stroke.m_ControlPointsToDrop[offset + i] = dropPoints[i]; + } + } + + public static void Send_BrushStrokeComplete(NetworkRunner runner, Guid id, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_BrushStrokeComplete(runner, id, commandGuid, timestamp, parentGuid, childCount); + } + else + { + RPC_BrushStrokeComplete(runner, id, commandGuid, timestamp, parentGuid, childCount, targetPlayer); + } + } + + private static void BrushStrokeComplete(Guid id, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + + if (CheckifCommandGuidIsInStack(commandGuid)) return; + + if (!m_inProgressStrokes.ContainsKey(id)) + { + Debug.LogError("shouldn't be here!"); + return; + } + + var stroke = m_inProgressStrokes[id]; + + CreateBrushStroke(stroke, commandGuid, timestamp, parentGuid, childCount); + + m_inProgressStrokes.Remove(id); + } + + private static void CreateBrushStroke(Stroke stroke, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + Action preAction = () => { stroke.m_Type = Stroke.Type.NotCreated; @@ -147,12 +310,99 @@ public static void CreateBrushStroke(Stroke stroke, Guid commandGuid, Guid paren var parentCommand = FindParentCommand(parentGuid); - var command = new BrushStrokeCommand(stroke, parent: parentCommand); + var command = new BrushStrokeCommand(stroke, commandGuid, timestamp, parent: parentCommand); AddPendingCommand(preAction, commandGuid, parentGuid, command, childCount); } -#region RPCS + public static void Send_DeleteStroke(NetworkRunner runner, int seed, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + if (targetPlayer == default) + { + RPC_DeleteStroke(runner, seed, commandGuid, timestamp, parentGuid, childCount); + } + else + { + RPC_DeleteStroke(runner, seed, commandGuid, timestamp, parentGuid, childCount, targetPlayer); + } + } + + private static void DeleteStroke(int seed, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + if (CheckifCommandGuidIsInStack(commandGuid)) return; + + // TODO : implment GUID for strokesdata. + // The range of int is large (-2,147,483,648 to 2,147,483,647), but collisions are still possible. + var foundStroke = SketchMemoryScript.m_Instance.GetMemoryList.Where(x => x.m_Seed == seed).First(); + + if (foundStroke != null) + { + var parentCommand = FindParentCommand(parentGuid); + var command = new DeleteStrokeCommand(foundStroke, commandGuid, timestamp, parent: parentCommand); + + AddPendingCommand(() => { }, commandGuid, parentGuid, command, childCount); + } + else + { + Debug.LogError($"couldn't find stroke with seed: {seed}"); + } + } + + public static void Send_SwitchEnvironment(NetworkRunner runner, Guid environmentGuid, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + + if (targetPlayer == default) + { + RPC_SwitchEnvironment(runner, environmentGuid, commandGuid, timestamp, parentGuid, childCount); + } + else + { + RPC_SwitchEnvironment(runner, environmentGuid, commandGuid, timestamp, parentGuid, childCount, targetPlayer); + } + } + + private static void SwitchEnvironment(Guid environmentGuid, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + if (CheckifCommandGuidIsInStack(commandGuid)) return; + + TiltBrush.Environment environment = EnvironmentCatalog.m_Instance.GetEnvironment(environmentGuid); + + if (environment != null) + { + + var parentCommand = FindParentCommand(parentGuid); + var command = new SwitchEnvironmentCommand(environment, commandGuid, timestamp, parent: parentCommand); + + AddPendingCommand(() => { }, commandGuid, parentGuid, command, childCount); + } + else + { + Debug.LogError($"Environment with Guid {environmentGuid} not found."); + } + } + + public static async Task WaitForAcknowledgment(Guid commandGuid, int timeoutMilliseconds = 1000) + { + var tcs = new TaskCompletionSource(); + m_acknowledgments[commandGuid] = tcs; + + var timeoutTask = Task.Delay(timeoutMilliseconds); + var acknowledgmentTask = tcs.Task; + var completedTask = await Task.WhenAny(acknowledgmentTask, timeoutTask); + + if (completedTask == acknowledgmentTask) + { + m_acknowledgments.Remove(commandGuid); + return await acknowledgmentTask; + } + else + { + m_acknowledgments.Remove(commandGuid); + return false; + } + } + + #region RPCS [Rpc(InvokeLocal = false)] public static void RPC_SyncToSharedAnchor(NetworkRunner runner, string uuid) { @@ -165,6 +415,7 @@ public static void RPC_SyncToSharedAnchor(NetworkRunner runner, string uuid) public static void RPC_PerformCommand(NetworkRunner runner, string commandName, string guid, string[] data) { Debug.Log($"Command recieved: {commandName}"); + if (commandName.Equals("TiltBrush.BrushStrokeCommand")) { var asString = string.Join(string.Empty, data); @@ -173,7 +424,7 @@ public static void RPC_PerformCommand(NetworkRunner runner, string commandName, // Temp decode.m_BrushGuid = new System.Guid(guid); - + // Can we set up these more sensibly? decode.m_Type = Stroke.Type.NotCreated; decode.m_IntendedCanvas = App.Scene.MainCanvas; @@ -205,95 +456,134 @@ public static void RPC_Redo(NetworkRunner runner, string commandName) } [Rpc(InvokeLocal = false)] - public static void RPC_BaseCommand(NetworkRunner runner, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + private static void RPC_BaseCommand(NetworkRunner runner, Guid commandGuid, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) { - Debug.Log($"Base command child count: {childCount}"); - var parentCommand = FindParentCommand(parentGuid); - var command = new BaseCommand(parent: parentCommand); + BaseCommand(commandGuid, parentGuid, childCount); + } - AddPendingCommand(() => {}, commandGuid, parentGuid, command, childCount); + [Rpc(InvokeLocal = false)] + private static void RPC_BaseCommand(NetworkRunner runner, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + { + BaseCommand(commandGuid, parentGuid, childCount); } [Rpc(InvokeLocal = false)] - public static void RPC_BrushStrokeFull(NetworkRunner runner, NetworkedStroke strokeData, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + private static void RPC_BrushStrokeFull(NetworkRunner runner, NetworkedStroke strokeData, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) { - var decode = NetworkedStroke.ToStroke(strokeData); + BrushStrokeFull(strokeData, commandGuid, timestamp, parentGuid, childCount); + } - CreateBrushStroke(decode, commandGuid, parentGuid, childCount); + [Rpc(InvokeLocal = false)] + private static void RPC_BrushStrokeFull(NetworkRunner runner, NetworkedStroke strokeData, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + BrushStrokeFull(strokeData, commandGuid, timestamp, parentGuid, childCount); } [Rpc(InvokeLocal = false)] - public static void RPC_BrushStrokeBegin(NetworkRunner runner, Guid id, NetworkedStroke strokeData, int finalLength) + private static void RPC_BrushStrokeBegin(NetworkRunner runner, Guid id, NetworkedStroke strokeData, int finalLength, [RpcTarget] PlayerRef targetPlayer = default) { - var decode = NetworkedStroke.ToStroke(strokeData); + BrushStrokeBegin(id, strokeData, finalLength); + } - decode.m_Type = Stroke.Type.NotCreated; - decode.m_IntendedCanvas = App.Scene.MainCanvas; - - Array.Resize(ref decode.m_ControlPoints, finalLength); - Array.Resize(ref decode.m_ControlPointsToDrop, finalLength); + [Rpc(InvokeLocal = false)] + private static void RPC_BrushStrokeBegin(NetworkRunner runner, Guid id, NetworkedStroke strokeData, int finalLength) + { + BrushStrokeBegin(id, strokeData, finalLength); + } - if(m_inProgressStrokes.ContainsKey(id)) - { - Debug.LogError("Shouldn't be here!"); - return; - } + [Rpc(InvokeLocal = false)] + private static void RPC_BrushStrokeContinue(NetworkRunner runner, Guid id, int offset, NetworkedControlPoint[] controlPoints, bool[] dropPoints, [RpcTarget] PlayerRef targetPlayer = default) + { + BrushStrokeContinue(id, offset, controlPoints, dropPoints); + } - m_inProgressStrokes[id] = decode; + [Rpc(InvokeLocal = false)] + private static void RPC_BrushStrokeContinue(NetworkRunner runner, Guid id, int offset, NetworkedControlPoint[] controlPoints, bool[] dropPoints) + { + BrushStrokeContinue(id, offset, controlPoints, dropPoints); } - + [Rpc(InvokeLocal = false)] - public static void RPC_BrushStrokeContinue(NetworkRunner runner, Guid id, int offset, NetworkedControlPoint[] controlPoints, bool[] dropPoints) + private static void RPC_BrushStrokeComplete(NetworkRunner runner, Guid id, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) { - if(!m_inProgressStrokes.ContainsKey(id)) - { - Debug.LogError("shouldn't be here!"); - return; - } + BrushStrokeComplete(id, commandGuid, timestamp, parentGuid, childCount); + } - var stroke = m_inProgressStrokes[id]; - - for(int i = 0; i < controlPoints.Length; ++i) - { - stroke.m_ControlPoints[offset + i] = NetworkedControlPoint.ToControlPoint(controlPoints[i]); - stroke.m_ControlPointsToDrop[offset + i] = dropPoints[i]; - } + [Rpc(InvokeLocal = false)] + private static void RPC_BrushStrokeComplete(NetworkRunner runner, Guid id, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + BrushStrokeComplete(id, commandGuid, timestamp, parentGuid, childCount); } [Rpc(InvokeLocal = false)] - public static void RPC_BrushStrokeComplete(NetworkRunner runner, Guid id, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + private static void RPC_DeleteStroke(NetworkRunner runner, int seed, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) { - if(!m_inProgressStrokes.ContainsKey(id)) - { - Debug.LogError("shouldn't be here!"); - return; - } + DeleteStroke(seed, commandGuid, timestamp, parentGuid, childCount); + } - var stroke = m_inProgressStrokes[id]; + [Rpc(InvokeLocal = false)] + private static void RPC_DeleteStroke(NetworkRunner runner, int seed, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + DeleteStroke(seed, commandGuid, timestamp, parentGuid, childCount); + } - CreateBrushStroke(stroke, commandGuid, parentGuid, childCount); + [Rpc(InvokeLocal = false)] + private static void RPC_SwitchEnvironment(NetworkRunner runner, Guid environmentGuid, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0, [RpcTarget] PlayerRef targetPlayer = default) + { + SwitchEnvironment(environmentGuid, commandGuid, timestamp, parentGuid, childCount); + } - m_inProgressStrokes.Remove(id); + [Rpc(InvokeLocal = false)] + private static void RPC_SwitchEnvironment(NetworkRunner runner, Guid environmentGuid, Guid commandGuid, int timestamp, Guid parentGuid = default, int childCount = 0) + { + SwitchEnvironment(environmentGuid, commandGuid, timestamp, parentGuid, childCount); } [Rpc(InvokeLocal = false)] - public static void RPC_DeleteStroke(NetworkRunner runner, int seed, Guid commandGuid, Guid parentGuid = default, int childCount = 0) + public static void RPC_StartHistorySync(NetworkRunner runner, [RpcTarget] PlayerRef targetPlayer) { - var foundStroke = SketchMemoryScript.m_Instance.GetMemoryList.Where(x => x.m_Seed == seed).First(); + m_Instance.IssueGlobalCommand(GlobalCommands.DisplaySynchInfo); + } - if (foundStroke != null) - { - var parentCommand = FindParentCommand(parentGuid); - var command = new DeleteStrokeCommand(foundStroke, parent: parentCommand); + [Rpc(InvokeLocal = false)] + public static void RPC_HistoryPercentageUpdate(NetworkRunner runner, [RpcTarget] PlayerRef targetPlayer, int expected, int sent) + { + MultiplayerSceneSync.m_Instance.numberOfCommandsExpected = expected; + MultiplayerSceneSync.m_Instance.numberOfCommandsSent = sent; + m_Instance.IssueGlobalCommand(GlobalCommands.SynchInfoPercentageUpdate); + } - AddPendingCommand(() => {}, commandGuid, parentGuid, command, childCount); - } - else + [Rpc(InvokeLocal = false)] + public static void RPC_HistorySyncCompleted(NetworkRunner runner, [RpcTarget] PlayerRef targetPlayer) + { + m_Instance.IssueGlobalCommand(GlobalCommands.HideSynchInfo); + } + + [Rpc(InvokeLocal = false)] + public static void RPC_CheckCommand(NetworkRunner runner, Guid commandGuid, PlayerRef initiatorPlayer, [RpcTarget] PlayerRef targetPlayer) + { + bool isCommandInStack = CheckifCommandGuidIsInStack(commandGuid); + RPC_Confirm(runner, commandGuid, isCommandInStack, initiatorPlayer); + } + + [Rpc(InvokeLocal = false)] + public static void RPC_CheckStroke(NetworkRunner runner, Guid strokeGuid, PlayerRef initiatorPlayer, [RpcTarget] PlayerRef targetPlayer) + { + bool isCommandInStack = CheckifStrokeGuidIsInMemory(strokeGuid); + RPC_Confirm(runner, strokeGuid, isCommandInStack, initiatorPlayer); + } + + [Rpc(InvokeLocal = false)] + public static void RPC_Confirm(NetworkRunner runner, Guid commandGuid, bool isCommandInStack, [RpcTarget] PlayerRef targetPlayer) + { + if (m_acknowledgments.TryGetValue(commandGuid, out var tcs)) { - Debug.LogError($"couldn't find stroke with seed: {seed}"); + tcs.SetResult(isCommandInStack); + m_acknowledgments.Remove(commandGuid); } } -#endregion + + #endregion } } diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs b/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs new file mode 100644 index 0000000000..94bf17856f --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs @@ -0,0 +1,73 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#if MP_PHOTON + +using System; +using System.Collections.Concurrent; +using System.Threading; +using System.Threading.Tasks; + + +// A static class for batching Photon RPC calls using async/await. +public static class PhotonRPCBatcher +{ + + private static int delayBetweenBatchesMs = 100; + private static ConcurrentQueue rpcQueue = new ConcurrentQueue(); + private static CancellationTokenSource cts = new CancellationTokenSource(); + private static bool isRunning = false; + + // Enqueues an RPC action to be sent. + public static void EnqueueRPC(Action rpcAction) + { + rpcQueue.Enqueue(rpcAction); + + // If not running yet, start the processing loop + if (!isRunning) + { + isRunning = true; + StartProcessingLoop(); + } + } + + // Starts the asynchronous loop that processes the RPC queue. + private static async void StartProcessingLoop() + { + + while (!cts.Token.IsCancellationRequested) + { + if (rpcQueue.TryDequeue(out Action rpcAction)) rpcAction?.Invoke(); + else + { + isRunning = false; + break; + } + + await Task.Delay(delayBetweenBatchesMs, cts.Token); + } + + isRunning = false; + } + + + // Stops the processing loop (if needed). + public static void Stop() + { + cts.Cancel(); + cts = new CancellationTokenSource(); + } + +} +#endif \ No newline at end of file diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs.meta b/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs.meta new file mode 100644 index 0000000000..35ee62003e --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/PhotonRPCBatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb1026450b30eca47a4c16779d4aeda7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonStructs.cs b/Assets/Scripts/Multiplayer/Photon/PhotonStructs.cs index 10d6787740..ba5ca4c6b9 100644 --- a/Assets/Scripts/Multiplayer/Photon/PhotonStructs.cs +++ b/Assets/Scripts/Multiplayer/Photon/PhotonStructs.cs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#if FUSION_WEAVER +#if MP_PHOTON using System; using UnityEngine; @@ -40,7 +40,7 @@ public PendingCommand(Guid guid, BaseCommand command, Action action, int count) ChildCommands = new List(); } } - + public struct NetworkCommandData : INetworkStruct { public Guid CommandGuid; @@ -93,7 +93,7 @@ internal static PointerManager.ControlPoint ToControlPoint(NetworkedControlPoint [System.Serializable] public struct NetworkedStroke : INetworkStruct { - public const int k_MaxCapacity = 128; + public const int k_MaxCapacity = NetworkingConstants.MaxControlPointsPerChunk; public Stroke.Type m_Type; [Networked][Capacity(k_MaxCapacity)] public NetworkArray m_ControlPointsToDrop => default; public Color m_Color; @@ -152,13 +152,13 @@ public NetworkedStroke Init(Stroke data) m_ControlPointsCapacity = data.m_ControlPoints.Length; - for(int i = 0; i < data.m_ControlPoints.Length; i++) + for (int i = 0; i < data.m_ControlPoints.Length; i++) { var point = new NetworkedControlPoint().Init(data.m_ControlPoints[i]); m_ControlPoints.Set(i, point); } - for(int i = 0; i < data.m_ControlPointsToDrop.Length; i++) + for (int i = 0; i < data.m_ControlPointsToDrop.Length; i++) { m_ControlPointsToDrop.Set(i, data.m_ControlPointsToDrop[i]); } diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs b/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs new file mode 100644 index 0000000000..d6d4df3827 --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs @@ -0,0 +1,344 @@ +// Copyright 2023 The Open Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#if MP_PHOTON + +using OpenBrush.Multiplayer; +using Photon.Pun; +using Photon.Realtime; +using Photon.Voice.Unity; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using TiltBrush; +using UnityEngine; + +public class PhotonVoiceManager : IVoiceConnectionHandler, IConnectionCallbacks, IMatchmakingCallbacks +{ + public ConnectionUserInfo UserInfo { get; set; } + public ConnectionState State { get; private set; } + public string LastError { get; private set; } + public bool isTransmitting { get; private set; } + + private VoiceConnection m_VoiceConnection; + private MultiplayerManager m_Manager; + private AppSettings m_PhotonVoiceAppSettings; + private Recorder m_Recorder; + private bool ConnectedToMaster = false; + private bool wasTransmitting = false; + + + + public PhotonVoiceManager(MultiplayerManager manager) + { + m_Manager = manager; + Init(); + isTransmitting = false; + } + + public async Task Init() + { + + try + { + State = ConnectionState.INITIALIZING; + m_VoiceConnection = GameObject.FindFirstObjectByType(); + if (m_VoiceConnection == null) throw new Exception("[PhotonVoiceManager] VoiceConnection component not found in scene"); + PhotonNetwork.LogLevel = PunLogLevel.ErrorsOnly; + m_VoiceConnection.VoiceLogger.LogLevel = Photon.Voice.LogLevel.Error; + + m_VoiceConnection.Settings = new AppSettings + { + AppIdVoice = App.Config.PhotonVoiceSecrets.ClientId, + FixedRegion = "", + }; + + m_VoiceConnection.Client.AddCallbackTarget(this); + + } + catch (Exception ex) + { + State = ConnectionState.ERROR; + LastError = $"[PhotonVoiceManager] Failed to Initialize lobby: {ex.Message}"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + return false; + } + + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Succesfully initialized"); + State = ConnectionState.INITIALIZED; + return true; + + } + + public async Task Connect() + { + State = ConnectionState.CONNECTING; + + m_VoiceConnection.Client.UserId = m_Manager.UserInfo.UserId; + + if (!m_VoiceConnection.Client.IsConnected) + { + //ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Attempting to connect Voice Server..."); + m_VoiceConnection.ConnectUsingSettings(); + while (!ConnectedToMaster) + { + //ControllerConsoleScript.m_Instance.AddNewLine("Waiting for Voice Connection to establish..."); + await Task.Delay(100); + } + } + + if (ConnectedToMaster) + { + State = ConnectionState.IN_LOBBY; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Connection successfully established."); + } + else + { + State = ConnectionState.ERROR; + LastError = $"[PhotonVoiceManager] Failed to connect."; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + } + + return ConnectedToMaster; + } + + public async Task JoinRoom(RoomCreateData RoomData) + { + State = ConnectionState.JOINING_ROOM; + + if (!m_VoiceConnection.Client.IsConnected) + { + bool connected = await Connect(); + if (!connected) + { + return false; + } + } + + var RoomParameters = new EnterRoomParams { RoomName = RoomData.roomName }; + bool roomJoined = m_VoiceConnection.Client.OpJoinOrCreateRoom(RoomParameters); + + if (roomJoined) + { + State = ConnectionState.IN_ROOM; + ControllerConsoleScript.m_Instance.AddNewLine($"[PhotonVoiceManager] Successfully joined room"); + } + else + { + State = ConnectionState.ERROR; + LastError = $"[PhotonVoiceManager] Failed to join or create room"; + ControllerConsoleScript.m_Instance.AddNewLine(LastError); + } + + return roomJoined; + } + + public async Task LeaveRoom(bool force) + { + State = ConnectionState.DISCONNECTING; + + if (!m_VoiceConnection.Client.InRoom) return false; + + bool leftRoom = m_VoiceConnection.Client.OpLeaveRoom(false); + + if (!leftRoom) + { + //ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Failed to initiate leaving the room."); + return false; + } + + //ControllerConsoleScript.m_Instance.AddNewLine("Initiated leaving the room..."); + + while (m_VoiceConnection.ClientState != ClientState.ConnectedToMasterServer) + { + await Task.Delay(100); + } + + if (m_VoiceConnection.ClientState == ClientState.ConnectedToMasterServer) + { + State = ConnectionState.DISCONNECTED; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Successfully left the room."); + return true; + } + else + { + State = ConnectionState.ERROR; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Failed to leave the room."); + return false; + } + } + + public async Task Disconnect() + { + + State = ConnectionState.DISCONNECTING; + + if (!m_VoiceConnection.Client.IsConnected) + { + //ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Voice Server is already disconnected."); + return true; + } + + m_VoiceConnection.Client.Disconnect(); + + while (m_VoiceConnection.ClientState != ClientState.Disconnected) + { + await Task.Delay(100); + //ControllerConsoleScript.m_Instance.AddNewLine("Disconnecting."); + } + + if (m_VoiceConnection.ClientState == ClientState.Disconnected) + { + State = ConnectionState.DISCONNECTED; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Successfully disconnected from Server."); + return true; + } + else + { + State = ConnectionState.ERROR; + ControllerConsoleScript.m_Instance.AddNewLine("[PhotonVoiceManager] Failed to disconnect from Server."); + return false; + } + } + + public bool StartSpeaking() + { + m_Recorder = m_VoiceConnection.PrimaryRecorder; + if (m_Recorder == null) + { + ControllerConsoleScript.m_Instance.AddNewLine("Recorder not found! Ensure it's attached to a GameObject."); + return false; + } + + // m_Recorder.DebugEchoMode = true; + m_Recorder.TransmitEnabled = true; + return true; + } + + public bool StopSpeaking() + { + if (m_Recorder != null) + { + m_Recorder.TransmitEnabled = false; + return true; + } + return false; + } + + public void Update() + { + UpdateSpeechDetection(); + } + + private void UpdateSpeechDetection() + { + if (m_Recorder == null) + { + return; + } + + isTransmitting = m_Recorder.IsCurrentlyTransmitting; + + if (isTransmitting && !wasTransmitting) + {; + Debug.Log("[PhotonVoiceManager] Speech started."); + } + else if (!isTransmitting && wasTransmitting) + { + Debug.Log("[PhotonVoiceManager] Speech stopped."); + } + + wasTransmitting = isTransmitting; + } + + + #region MatchmakingCallbacks + + public void OnCreatedRoom() + { + + } + + public void OnCreateRoomFailed(short returnCode, string message) + { + Debug.LogErrorFormat("OnCreateRoomFailed errorCode={0} errorMessage={1}", returnCode, message); + } + + public void OnFriendListUpdate(List friendList) + { + + } + + public void OnJoinedRoom() + { + } + + public void OnJoinRandomFailed(short returnCode, string message) + { + Debug.LogErrorFormat("OnJoinRandomFailed errorCode={0} errorMessage={1}", returnCode, message); + } + + public void OnJoinRoomFailed(short returnCode, string message) + { + Debug.LogErrorFormat("OnJoinRoomFailed errorCode={1} errorMessage={2}", returnCode, message); + } + + public void OnLeftRoom() + { + + } + + #endregion + + #region ConnectionCallbacks + + public void OnConnected() + { + + } + + public void OnConnectedToMaster() + { + ConnectedToMaster = true; + } + + public void OnDisconnected(DisconnectCause cause) + { + if (cause == DisconnectCause.None || cause == DisconnectCause.DisconnectByClientLogic || cause == DisconnectCause.ApplicationQuit) + { + return; + } + Debug.LogErrorFormat("OnDisconnected cause={0}", cause); + } + + public void OnRegionListReceived(RegionHandler regionHandler) + { + + } + + public void OnCustomAuthenticationResponse(Dictionary data) + { + + } + + public void OnCustomAuthenticationFailed(string debugMessage) + { + + } + + + #endregion + +} +#endif \ No newline at end of file diff --git a/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs.meta b/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs.meta new file mode 100644 index 0000000000..c5d392c1bf --- /dev/null +++ b/Assets/Scripts/Multiplayer/Photon/PhotonVoiceManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6f5caeaa755bc948b340e09bc685673 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PointerManager.cs b/Assets/Scripts/PointerManager.cs index 0a706691a0..c7cafd1efc 100644 --- a/Assets/Scripts/PointerManager.cs +++ b/Assets/Scripts/PointerManager.cs @@ -398,6 +398,12 @@ public PointerScript CreateRemotePointer() return script; } + public void RemoveRemotePointer(PointerScript pointer) + { + m_RemoteUserPointers.Remove(pointer); + Destroy(pointer.gameObject); + } + /// The brush size, using "normalized" values in the range [0,1]. /// Guaranteed to be in [0,1]. public float GetPointerBrushSize01(InputManager.ControllerName controller) @@ -1538,6 +1544,7 @@ void FinalizeLine(bool isContinue = false, bool discard = false) } else { + SketchMemoryScript.StrokeFlags flags = SketchMemoryScript.StrokeFlags.None; if (groupStart == null) { @@ -1551,7 +1558,10 @@ void FinalizeLine(bool isContinue = false, bool discard = false) // Verify IsGroupContinue invariant Debug.Assert(pointer.TimestampMs == groupStartTime); } - pointer.DetachLine(bDiscardLine, null, flags); + + // Set isFinalStroke to true only for the last pointer to ensure command chain invokes once all strokes are chained + bool isFinalStroke = (i == m_NumActivePointers - 1); + pointer.DetachLine(bDiscardLine, null, flags, isFinalStroke); } } } diff --git a/Assets/Scripts/PointerScript.cs b/Assets/Scripts/PointerScript.cs index a2d0a713df..ac9c22f53d 100644 --- a/Assets/Scripts/PointerScript.cs +++ b/Assets/Scripts/PointerScript.cs @@ -933,7 +933,8 @@ public void RecreateLineFromMemory(Stroke stroke) public void DetachLine( bool bDiscard, Stroke rMemoryObjectForPlayback, - SketchMemoryScript.StrokeFlags strokeFlags = SketchMemoryScript.StrokeFlags.None) + SketchMemoryScript.StrokeFlags strokeFlags = SketchMemoryScript.StrokeFlags.None, + bool isFinalStroke = false) { if (rMemoryObjectForPlayback != null) @@ -1001,7 +1002,11 @@ public void DetachLine( m_CurrentBrushSize, m_CurrentLine.StrokeScale, m_ControlPoints, strokeFlags, - WidgetManager.m_Instance.ActiveStencil, m_LineLength_CS, m_CurrentLine.RandomSeed); + WidgetManager.m_Instance.ActiveStencil, + m_LineLength_CS, + m_CurrentLine.RandomSeed, + isFinalStroke + ); } else { diff --git a/Assets/Scripts/Rendering/IconTextureAtlas.cs b/Assets/Scripts/Rendering/IconTextureAtlas.cs index f0fb2db86b..01520f088f 100644 --- a/Assets/Scripts/Rendering/IconTextureAtlas.cs +++ b/Assets/Scripts/Rendering/IconTextureAtlas.cs @@ -56,7 +56,7 @@ public Material GetAppropriateMaterial(bool activated, bool focus) void AtlasIconTextures() { // Load the appropriate catalog from Resources. - string catalogPath = App.Config.GetIsExperimental() ? m_ExperimentalCatalogPath : m_CatalogPath; + string catalogPath = m_ExperimentalCatalogPath; m_Catalog = Resources.Load(catalogPath); Debug.Assert(m_Catalog != null); diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 3b4525b418..9b490d66d5 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -1021,6 +1021,71 @@ public SketchSnapshot CreateSnapshotWithIcons(out IEnumerator corouti m_CaptureGifSaveIcon ? m_SaveGifRenderTextures : null)); return snapshot; } + + public IEnumerator GetLastAutosaveBytes(Action onComplete) + { + + while (m_AutosaveCoroutine != null) yield return null; + + // Retrieve the autosaved file + string autosaveFile = MostRecentAutosaveFile(); + if (!string.IsNullOrEmpty(autosaveFile) && File.Exists(autosaveFile)) + { + try + { + byte[] fileBytes = File.ReadAllBytes(autosaveFile); + Debug.Log($"Autosave complete. Loaded {fileBytes.Length} bytes from {autosaveFile}"); + onComplete?.Invoke(fileBytes); + } + catch (IOException ex) + { + Debug.LogError($"Failed to read autosave file: {ex.Message}"); + onComplete?.Invoke(null); + } + } + else + { + Debug.LogWarning("Autosave file not found or doesn't exist."); + onComplete?.Invoke(null); + } + } + + public void LoadFromBytes(byte[] data) + { + if (data == null || data.Length == 0) + { + Debug.LogError("LoadFromBytes: Data is null or empty."); + return; + } + + try + { + // Write the byte array to a temporary file + string tempFilePath = Path.Combine(Application.temporaryCachePath, "temp_autosave.tilt"); + File.WriteAllBytes(tempFilePath, data); + + // Load the temporary file into the scene + var fileInfo = new DiskSceneFileInfo(tempFilePath); + if (Load(fileInfo)) + { + Debug.Log("LoadFromBytes: Scene successfully loaded from bytes."); + } + else + { + Debug.LogError("LoadFromBytes: Failed to load scene."); + } + + // Clean up the temporary file + if (File.Exists(tempFilePath)) + { + File.Delete(tempFilePath); + } + } + catch (Exception ex) + { + Debug.LogError($"LoadFromBytes: Error while loading scene from bytes. Exception: {ex.Message}"); + } + } } } // namespace TiltBrush diff --git a/Assets/Scripts/Save/SketchSnapshot.cs b/Assets/Scripts/Save/SketchSnapshot.cs index 3ac268354e..af4e44e35c 100644 --- a/Assets/Scripts/Save/SketchSnapshot.cs +++ b/Assets/Scripts/Save/SketchSnapshot.cs @@ -19,6 +19,8 @@ using System.Text; using UnityEngine; using Newtonsoft.Json; +using ICSharpCode.SharpZipLib.Zip; +using static TiltBrush.SketchWriter; namespace TiltBrush { @@ -211,6 +213,53 @@ static Guid GetForcePrecededBy(Guid original) return brush.m_Guid; } + public string WriteSnapshotToStream(Stream outputStream) + { + try + { + using (var zip = new ZipOutputStream(outputStream)) + { + zip.SetLevel(9); // Set compression level + + // Write metadata + zip.PutNextEntry(new ZipEntry(TiltFile.FN_METADATA)); + using (var writer = new StreamWriter(zip, Encoding.UTF8, 1024, true)) + { + m_JsonSerializer.Serialize(writer, m_Metadata); + } + zip.CloseEntry(); + + // Prepare the necessary data for WriteMemory + List strokes = new List(SketchMemoryScript.m_Instance.GetMemoryList); + IList strokeCopies = EnumerateAdjustedSnapshots(strokes).ToList(); + GroupIdMapping groupIdMapping = new GroupIdMapping(); + List brushList; + + // Write sketch data + zip.PutNextEntry(new ZipEntry(TiltFile.FN_SKETCH)); + WriteMemory(zip, strokeCopies, groupIdMapping, out brushList); + zip.CloseEntry(); + + // Write thumbnail if available + if (Thumbnail != null) + { + zip.PutNextEntry(new ZipEntry(TiltFile.FN_THUMBNAIL)); + zip.Write(Thumbnail, 0, Thumbnail.Length); + zip.CloseEntry(); + } + + // Add other necessary files as needed + } + + return null; // No error + } + catch (Exception ex) + { + return ex.Message; + } + } + + /// Returns null on successful completion. If IO or UnauthorizedAccess exceptions are thrown, /// returns their messages. Should not normally raise exceptions. public string WriteSnapshotToFile(string path) diff --git a/Assets/Scripts/Save/SketchWriter.cs b/Assets/Scripts/Save/SketchWriter.cs index 15fd9b30ba..adf23a4690 100644 --- a/Assets/Scripts/Save/SketchWriter.cs +++ b/Assets/Scripts/Save/SketchWriter.cs @@ -278,6 +278,91 @@ public static void WriteMemory(Stream stream, IList s } } + + /// Serializes brush GUIDs directly instead of maintaining an internal mapping or list. + public static void WriteMemory(Stream stream, IList strokeCopies, + GroupIdMapping groupIdMapping) + { + bool allowFastPath = BitConverter.IsLittleEndian; + var writer = new TiltBrush.SketchBinaryWriter(stream); + + writer.UInt32(SKETCH_SENTINEL); + writer.Int32(SKETCH_VERSION); + writer.Int32(0); // reserved for header: must be 0 + // Bump SKETCH_VERSION to >= 6 and remove this comment if non-zero data is written here + writer.UInt32(0); // additional data size + + // strokes + writer.Int32(strokeCopies.Count); + foreach (AdjustedMemoryBrushStroke copy in strokeCopies) + { + var stroke = copy.strokeData; + Guid brushGuid = stroke.m_BrushGuid; + + writer.Guid(brushGuid); + writer.Color(stroke.m_Color); + writer.Float(stroke.m_BrushSize); + + // Determine the stroke extension mask + StrokeExtension strokeExtensionMask = StrokeExtension.Flags | StrokeExtension.Seed; + if (stroke.m_BrushScale != 1) { strokeExtensionMask |= StrokeExtension.Scale; } + if (stroke.m_Group != SketchGroupTag.None) { strokeExtensionMask |= StrokeExtension.Group; } + strokeExtensionMask |= StrokeExtension.Layer; + + writer.UInt32((uint)strokeExtensionMask); + uint controlPointExtensionMask = + (uint)(ControlPointExtension.Pressure | ControlPointExtension.Timestamp); + writer.UInt32(controlPointExtensionMask); + + // Stroke extension fields, in order of appearance in the mask + writer.UInt32((uint)copy.adjustedStrokeFlags); + if ((uint)(strokeExtensionMask & StrokeExtension.Scale) != 0) + { + writer.Float(stroke.m_BrushScale); + } + if ((uint)(strokeExtensionMask & StrokeExtension.Group) != 0) + { + writer.UInt32(groupIdMapping.GetId(stroke.m_Group)); + } + if ((uint)(strokeExtensionMask & StrokeExtension.Seed) != 0) + { + writer.Int32(stroke.m_Seed); + } + if ((uint)(strokeExtensionMask & StrokeExtension.Layer) != 0) + { + writer.UInt32(copy.layerIndex); + } + + // Control points + writer.Int32(stroke.m_ControlPoints.Length); + if (allowFastPath && controlPointExtensionMask == ControlPoint.EXTENSIONS) + { + // Fast path: write ControlPoint[] (semi-)directly into the file + unsafe + { + int size = sizeof(ControlPoint) * stroke.m_ControlPoints.Length; + fixed (ControlPoint* aPoints = stroke.m_ControlPoints) + { + writer.Write((IntPtr)aPoints, size); + } + } + } + else + { + for (int j = 0; j < stroke.m_ControlPoints.Length; ++j) + { + var rControlPoint = stroke.m_ControlPoints[j]; + writer.Vec3(rControlPoint.m_Pos); + writer.Quaternion(rControlPoint.m_Orient); + // Control point extension fields, in order of appearance in the mask + writer.Float(rControlPoint.m_Pressure); + writer.UInt32(rControlPoint.m_TimestampMs); + } + } + } + } + + /// Leaves stream in indeterminate state; caller should Close() upon return. public static bool ReadMemory(Stream stream, Guid[] brushList, bool bAdditive, out bool isLegacy, out Dictionary oldGroupToNewGroup) { @@ -522,5 +607,170 @@ public static List GetStrokes( return result; } + + // Parses a binary stream into List of MemoryBrushStroke the binary need strokes with encoded guids + public static List GetStrokes( + Stream stream, bool allowFastPath, bool squashLayers = false) + { + var reader = new SketchBinaryReader(stream); + + uint sentinel = reader.UInt32(); + if (sentinel != SKETCH_SENTINEL) + { + Debug.LogFormat("Invalid .tilt: bad sentinel"); + return null; + } + + int version = reader.Int32(); + if (version < REQUIRED_SKETCH_VERSION_MIN || + version > REQUIRED_SKETCH_VERSION_MAX) + { + Debug.LogFormat("Invalid .tilt: unsupported version {0}", version); + return null; + } + + reader.Int32(); // reserved for header: must be 0 + uint moreHeader = reader.UInt32(); // additional data size + if (!reader.Skip(moreHeader)) { return null; } + + // strokes + int iNumMemories = reader.Int32(); + var result = new List(); + for (int i = 0; i < iNumMemories; ++i) + { + var stroke = new Stroke(); + + // Read the brush GUID directly from the stream + stroke.m_BrushGuid = reader.ReadGuid(); + stroke.m_Color = reader.Color(); + stroke.m_BrushSize = reader.Float(); + stroke.m_BrushScale = 1f; + stroke.m_Seed = 0; + + uint strokeExtensionMask = reader.UInt32(); + uint controlPointExtensionMask = reader.UInt32(); + + if ((strokeExtensionMask & (int)StrokeExtension.Seed) == 0) + { + // Backfill for old files saved without seeds. + // This is arbitrary but should be determinstic. + unchecked + { + int seed = i; + seed = (seed * 397) ^ stroke.m_BrushGuid.GetHashCode(); + seed = (seed * 397) ^ stroke.m_Color.GetHashCode(); + seed = (seed * 397) ^ stroke.m_BrushSize.GetHashCode(); + stroke.m_Seed = seed; + } + } + + // Process stroke extension fields... + for (var fields = strokeExtensionMask; fields != 0; fields &= (fields - 1)) + { + uint bit = (fields & ~(fields - 1)); + switch ((StrokeExtension)bit) + { + case StrokeExtension.None: + Debug.Assert(false); + break; + case StrokeExtension.Flags: + stroke.m_Flags = (StrokeFlags)reader.UInt32(); + break; + case StrokeExtension.Scale: + stroke.m_BrushScale = reader.Float(); + break; + case StrokeExtension.Group: + { + UInt32 groupId = reader.UInt32(); + stroke.Group = App.GroupManager.GetGroupFromId(groupId); + break; + } + case StrokeExtension.Layer: + UInt32 layerIndex = reader.UInt32(); + if (squashLayers) + { + layerIndex = 0; + } + var canvas = App.Scene.GetOrCreateLayer((int)layerIndex); + stroke.m_IntendedCanvas = canvas; + break; + case StrokeExtension.Seed: + stroke.m_Seed = reader.Int32(); + break; + default: + { + // Skip unknown extension. + if ((bit & (uint)StrokeExtension.MaskSingleWord) != 0) + { + reader.UInt32(); + } + else + { + uint size = reader.UInt32(); + if (!reader.Skip(size)) { return null; } + } + break; + } + } + } + + // Process control points... + int nControlPoints = reader.Int32(); + stroke.m_ControlPoints = new PointerManager.ControlPoint[nControlPoints]; + stroke.m_ControlPointsToDrop = new bool[nControlPoints]; + + if (allowFastPath && controlPointExtensionMask == PointerManager.ControlPoint.EXTENSIONS) + { + unsafe + { + int size = sizeof(PointerManager.ControlPoint) * stroke.m_ControlPoints.Length; + fixed (PointerManager.ControlPoint* aPoints = stroke.m_ControlPoints) + { + if (!reader.ReadInto((IntPtr)aPoints, size)) + { + return null; + } + } + } + } + else + { + for (int j = 0; j < nControlPoints; ++j) + { + PointerManager.ControlPoint rControlPoint; + + rControlPoint.m_Pos = reader.Vec3(); + rControlPoint.m_Orient = reader.Quaternion(); + + rControlPoint.m_Pressure = 1.0f; + rControlPoint.m_TimestampMs = 0; + + for (var fields = controlPointExtensionMask; fields != 0; fields &= (fields - 1)) + { + switch ((ControlPointExtension)(fields & ~(fields - 1))) + { + case ControlPointExtension.None: + Debug.Assert(false); + break; + case ControlPointExtension.Pressure: + rControlPoint.m_Pressure = reader.Float(); + break; + case ControlPointExtension.Timestamp: + rControlPoint.m_TimestampMs = reader.UInt32(); + break; + default: + reader.Int32(); + break; + } + } + stroke.m_ControlPoints[j] = rControlPoint; + } + } + + result.Add(stroke); + } + return result; + } + } -} // namespace TiltBrush +}// namespace TiltBrush \ No newline at end of file diff --git a/Assets/Scripts/SecretsConfig.cs b/Assets/Scripts/SecretsConfig.cs index 6b494ceabf..b29f36ca78 100644 --- a/Assets/Scripts/SecretsConfig.cs +++ b/Assets/Scripts/SecretsConfig.cs @@ -27,6 +27,7 @@ public enum Service OculusMobile = 3, Pimax = 4, PhotonFusion = 5, + PhotonVoice = 6, } [Serializable] diff --git a/Assets/Scripts/SketchBinaryReader.cs b/Assets/Scripts/SketchBinaryReader.cs index 2ca35cbf1e..ac76cd9dcd 100644 --- a/Assets/Scripts/SketchBinaryReader.cs +++ b/Assets/Scripts/SketchBinaryReader.cs @@ -100,6 +100,13 @@ public Quaternion Quaternion() return new Quaternion(Float(), Float(), Float(), Float()); } + + public Guid ReadGuid() + { + int bytesRead = m_stream.Read(m_buf16, 0, 16); + return new Guid(m_buf16); + } + private void LazyCreateBigBuffer() { if (m_bufBig == null) diff --git a/Assets/Scripts/SketchBinaryWriter.cs b/Assets/Scripts/SketchBinaryWriter.cs index 4c86ef31db..eb527093b7 100644 --- a/Assets/Scripts/SketchBinaryWriter.cs +++ b/Assets/Scripts/SketchBinaryWriter.cs @@ -53,6 +53,12 @@ public void Dispose() BaseStream = null; } + public void Guid(Guid guid) + { + byte[] guidBytes = guid.ToByteArray(); + m_stream.Write(guidBytes, 0, guidBytes.Length); + } + public void Color(Color color) { Float(color.r); diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 4577277bec..cfdab9e636 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using OpenBrush.Multiplayer; using System; using System.Collections; using System.Collections.Generic; @@ -143,9 +144,21 @@ public enum GlobalCommands SignOutConfirm, ReadOnlyNotice, ShowContribution, + WhatIsNew, // Open Brush Reserved Enums 1000-1999 LanguagePopup = 1000, + MultiplayerTogglePanel = 1001, + MultiplayerPanelOptions = 1002, // iParam1: Popup options + MultiplayerJoinRoom = 1004, + EditMultiplayerRoomName = 1005, + MultiplayerLeaveRoom = 1006, + MultiplayerConnect = 1007, + MultiplayerDisconnect = 1008, + EditMultiplayerNickName = 1009, + DisplaySynchInfo = 1010, + SynchInfoPercentageUpdate = 1011, + HideSynchInfo = 1012, RenameSketch = 5200, OpenLayerOptionsPopup = 5201, @@ -1274,8 +1287,7 @@ void UpdateBaseInput() && !InputManager.m_Instance.GetCommand(InputManager.SketchCommands.Activate) && m_GrabBrush.grabbingWorld == false && m_CurrentGazeObject == -1 // free up swipe for use by gaze object - && (m_ControlsType != ControlsType.SixDofControllers || InputManager.Brush.IsTrackedObjectValid) - // TODO:Mikesky - very hacky + && (m_ControlsType != ControlsType.SixDofControllers || InputManager.Brush.IsTrackedObjectValid) // TODO:Mikesky - very hacky && SketchSurfacePanel.m_Instance.ActiveTool.m_Type != BaseTool.ToolType.MultiCamTool; if (m_EatToolScaleInput) @@ -1491,9 +1503,7 @@ void UpdateStandardInput() if (!m_PanelManager.AdvancedModeActive() && InputManager.m_Instance.GetCommandDown(InputManager.SketchCommands.ToggleDefaultTool) && !m_SketchSurfacePanel.IsDefaultToolEnabled() && - m_SketchSurfacePanel.ActiveTool.AllowDefaultToolToggle() && - // don't allow tool to change while pointing at panel because there is no visual indication - m_CurrentGazeObject == -1) + m_SketchSurfacePanel.ActiveTool.AllowDefaultToolToggle() && m_CurrentGazeObject == -1)// don't allow tool to change while pointing at panel because there is no visual indication { m_SketchSurfacePanel.EnableDefaultTool(); AudioManager.m_Instance.PlayPinCushionSound(true); @@ -1604,7 +1614,8 @@ bool CanUndo() m_PanelManager.GazePanelsAreVisible() && !m_GrabWand.grabbingWorld && !InputManager.m_Instance.GetCommand(InputManager.SketchCommands.Activate) && - !SelectionManager.m_Instance.IsAnimatingTossFromGrabbingGroup; + !SelectionManager.m_Instance.IsAnimatingTossFromGrabbingGroup && + !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); } bool CanRedo() @@ -1614,7 +1625,8 @@ bool CanRedo() m_PanelManager.GazePanelsAreVisible() && !m_GrabBrush.grabbingWorld && !InputManager.m_Instance.GetCommand(InputManager.SketchCommands.Activate) && - !SelectionManager.m_Instance.IsAnimatingTossFromGrabbingGroup; + !SelectionManager.m_Instance.IsAnimatingTossFromGrabbingGroup && + !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); } bool ShouldRepeatUndo() @@ -4507,6 +4519,20 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, DismissPopupOnCurrentGazeObject(false); break; } + case GlobalCommands.EditMultiplayerRoomName: + { + var panel = (MultiplayerPanel)m_PanelManager.GetActivePanelByType(BasePanel.PanelType.Multiplayer); + panel.RoomName = KeyboardPopUpWindow.m_LastInput; + DismissPopupOnCurrentGazeObject(false); + break; + } + case GlobalCommands.EditMultiplayerNickName: + { + var panel = (MultiplayerPanel)m_PanelManager.GetActivePanelByType(BasePanel.PanelType.Multiplayer); + panel.NickName = KeyboardPopUpWindow.m_LastInput; + DismissPopupOnCurrentGazeObject(false); + break; + } case GlobalCommands.ShowWindowGUI: break; case GlobalCommands.Disco: @@ -4830,8 +4856,28 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.OpenExampleScriptsList: OpenURLAndInformUser($"http://localhost:{App.HttpServer.HttpPort}/examplescripts"); break; + case GlobalCommands.MultiplayerTogglePanel: + m_PanelManager.ToggleMultiplayerPanels(); + PointerManager.m_Instance.EatLineEnabledInput(); + SketchSurfacePanel.m_Instance.EatToolsInput(); + break; + case GlobalCommands.DisplaySynchInfo: + MultiplayerSceneSync.m_Instance.StartSynchInfo(); + break; + case GlobalCommands.SynchInfoPercentageUpdate: + MultiplayerSceneSync.m_Instance.SynchInfoPercentageUpdate(); + break; + case GlobalCommands.HideSynchInfo: + MultiplayerSceneSync.m_Instance.HideSynchInfo(); + break; case GlobalCommands.RepaintOptions: break; // Intentionally blank. case GlobalCommands.Null: break; // Intentionally blank. + case GlobalCommands.MultiplayerPanelOptions: break; // Intentionally blank. + case GlobalCommands.MultiplayerJoinRoom: break; // Intentionally blank. + case GlobalCommands.MultiplayerLeaveRoom: break; // Intentionally blank. + case GlobalCommands.MultiplayerConnect: break; // Intentionally blank. + case GlobalCommands.MultiplayerDisconnect: break; // Intentionally blank. + case GlobalCommands.WhatIsNew: break;// Intentionally blank. default: Debug.LogError($"Unrecognized command {rEnum}"); break; @@ -4971,8 +5017,10 @@ public bool IsCommandAvailable(GlobalCommands rEnum, int iParam = -1) // TODO: hide gallery view / publish if there are no saved sketches switch (rEnum) { - case GlobalCommands.Undo: return SketchMemoryScript.m_Instance.CanUndo(); - case GlobalCommands.Redo: return SketchMemoryScript.m_Instance.CanRedo(); + case GlobalCommands.Undo: + return SketchMemoryScript.m_Instance.CanUndo() && !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); + case GlobalCommands.Redo: + return SketchMemoryScript.m_Instance.CanRedo() && !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); case GlobalCommands.Save: bool canSave = SaveLoadScript.m_Instance.SceneFile.Valid && @@ -5010,7 +5058,7 @@ public bool IsCommandAvailable(GlobalCommands rEnum, int iParam = -1) (VrAssetService.m_Instance.UploadProgress <= 0.0f) && IsCommandAvailable(GlobalCommands.UploadToGenericCloud); case GlobalCommands.NewSketch: - return SketchHasChanges(); + return SketchHasChanges() && !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); case GlobalCommands.Credits: case GlobalCommands.AshleysSketch: return !SketchHasChanges() && !SketchMemoryScript.m_Instance.IsMemoryDirty(); @@ -5042,7 +5090,25 @@ public bool IsCommandAvailable(GlobalCommands rEnum, int iParam = -1) return m_WidgetManager.AnyActivePathHasAKnot(); case GlobalCommands.GoogleDriveSync: return App.GoogleIdentity.LoggedIn; - case GlobalCommands.RecordCameraPath: return m_WidgetManager.CameraPathsVisible; + case GlobalCommands.RecordCameraPath: + return m_WidgetManager.CameraPathsVisible; + case GlobalCommands.AdvancedPanelsToggle: + return !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); + case GlobalCommands.MultiplayerConnect: + return MultiplayerManager.m_Instance.IsConnectable(); + case GlobalCommands.MultiplayerDisconnect: + return MultiplayerManager.m_Instance.IsDisconnectable(); + case GlobalCommands.MultiplayerJoinRoom: + return !PanelManager.m_Instance.AdvancedModeActive() && MultiplayerManager.m_Instance.CanJoinRoom() && !SceneSettings.m_Instance.GetDesiredPreset().isPassthrough; + case GlobalCommands.MultiplayerLeaveRoom: + return MultiplayerManager.m_Instance.CanLeaveRoom(); + case GlobalCommands.Sketchbook: + case GlobalCommands.SketchbookMenu: + case GlobalCommands.EditMultiplayerNickName: + case GlobalCommands.EditMultiplayerRoomName: + return !(MultiplayerManager.m_Instance.State == ConnectionState.IN_ROOM); + case GlobalCommands.WhatIsNew: + return false; } return true; } diff --git a/Assets/Scripts/SketchMemoryScript.cs b/Assets/Scripts/SketchMemoryScript.cs index 8239780bbe..7b7420ec5e 100644 --- a/Assets/Scripts/SketchMemoryScript.cs +++ b/Assets/Scripts/SketchMemoryScript.cs @@ -16,6 +16,9 @@ using System; using System.Collections.Generic; using System.Linq; +using TiltBrush; +using System.Collections; +using System.Threading.Tasks; namespace TiltBrush { @@ -36,6 +39,7 @@ public class SketchMemoryScript : MonoBehaviour public static SketchMemoryScript m_Instance; public event Action OperationStackChanged; + public event Action NetworkOperationStackChanged; public Action CommandPerformed; public Action CommandUndo; public Action CommandRedo; @@ -80,6 +84,8 @@ public static void SetFlag(ref SketchMemoryScript.StrokeFlags flags, private Stack m_OperationStack; // stack of undone operations available for redo private Stack m_RedoStack; + // stack of network sketch operations + private Stack m_NetworkStack = new Stack(); // Memory list by timestamp of initial control point. The nodes of this list are // embedded in MemoryObject. Notable properties: @@ -191,6 +197,18 @@ public LinkedList GetMemoryList get { return m_MemoryList; } } + public IEnumerable GetAllOperations() + { + var allCommands = m_OperationStack.Concat(m_NetworkStack); + + return allCommands.OrderBy(command => command.NetworkTimestamp); + } + + public void AddCommandToNetworkStack(BaseCommand command) + { + m_NetworkStack.Push(command); + } + public Stroke GetStrokeAtIndex(int index) { return m_Instance.m_MemoryList.ElementAt(index); @@ -282,6 +300,7 @@ public bool IsMemoryDirty() return false; } + public bool CanUndo() { return m_OperationStack.Count > 0; } public bool CanRedo() { return m_RedoStack.Count > 0; } @@ -406,6 +425,17 @@ public void PerformAndRecordCommand(BaseCommand command, bool discardIfNotMerged } } + /// Executes and records a network-synchronized command. + /// Note: This method does not include merge logic or parent-child relationship checks, + /// as these are already handled by the PhotonRPC system. + public void PerformAndRecordNetworkCommand(BaseCommand command, bool discard = false) + { + BaseCommand delta = command; + delta.Redo(); + if (!discard) m_NetworkStack.Push(command); + NetworkOperationStackChanged?.Invoke(); + } + // TODO: deprecate in favor of PerformAndRecordCommand // Used by BrushStrokeCommand and ModifyLightCommmand while in Disco mode public void RecordCommand(BaseCommand command) @@ -510,7 +540,8 @@ public void MemorizeBatchedBrushStroke( BatchSubset subset, Color rColor, Guid brushGuid, float fBrushSize, float brushScale, List rControlPoints, StrokeFlags strokeFlags, - StencilWidget stencil, float lineLength, int seed) + StencilWidget stencil, float lineLength, int seed, + bool isFinalStroke) { // NOTE: PointerScript calls ClearRedo() in batch case @@ -527,8 +558,10 @@ public void MemorizeBatchedBrushStroke( rNewStroke.m_Seed = seed; subset.m_Stroke = rNewStroke; - SketchMemoryScript.m_Instance.RecordCommand( - new BrushStrokeCommand(rNewStroke, stencil, lineLength)); + SketchMemoryScript.m_Instance.PerformAndRecordCommand( + new BrushStrokeCommand(rNewStroke, stencil, lineLength), + invoke: isFinalStroke + ); if (m_SanityCheckStrokes) { @@ -775,6 +808,16 @@ public void ClearRedo() m_RedoStack.Clear(); } + public void ClearNetworkStack() + { + foreach (var command in m_NetworkStack) + { + command.Dispose(); + } + m_NetworkStack.Clear(); + NetworkOperationStackChanged?.Invoke(); + } + public void ClearMemory() { if (m_ScenePlayback != null) @@ -798,6 +841,8 @@ public void ClearMemory() } m_OperationStack.Clear(); OperationStackChanged?.Invoke(); + m_NetworkStack.Clear(); + NetworkOperationStackChanged?.Invoke(); m_LastOperationStackCount = 0; m_MemoryList.Clear(); App.GroupManager.ResetGroups(); @@ -949,6 +994,14 @@ public static int AllStrokesCount() return m_Instance.m_MemoryList.Count(); } + public List GetStrokesWithoutCommand() + { + return m_MemoryList + .Where(stroke => stroke.Command == null) + .OrderBy(s => s.HeadTimestampMs) + .ToList(); + } + public static void InitUndoObject(BaseBrushScript rBrushScript) { rBrushScript.CloneAsUndoObject(); @@ -1371,5 +1424,48 @@ public static List GetStrokesBetween(int start, int end) return result; } + + public bool IsStrokeInMemory(Guid strokeGuid) + { + return m_MemoryList.Any(stroke => stroke.m_Guid == strokeGuid); + } + + public bool IsCommandInStack(Guid commandGuid) + { + return IsCommandInOperationStack(commandGuid) || + IsCommandInRedoStack(commandGuid) || + IsCommandInNetworkStack(commandGuid); + } + + public bool IsCommandInOperationStack(Guid commandGuid) + { + return m_OperationStack.Any(command => command.Guid == commandGuid); + } + + public bool IsCommandInRedoStack(Guid commandGuid) + { + return m_RedoStack.Any(command => command.Guid == commandGuid); + } + + public bool IsCommandInNetworkStack(Guid commandGuid) + { + return m_NetworkStack.Any(command => command.Guid == commandGuid); + } + + public void SetTimeOffsetToAllStacks(int m_NetworkOffsetTimestamp) + { + SetTimeOffset(m_RedoStack, m_NetworkOffsetTimestamp); + SetTimeOffset(m_OperationStack, m_NetworkOffsetTimestamp); + SetTimeOffset(m_NetworkStack, m_NetworkOffsetTimestamp); + } + + public void SetTimeOffset(Stack stack, int m_NetworkOffsetTimestamp) + { + foreach (BaseCommand c in stack) + { + if (c.NetworkTimestamp == null) + c.NetworkTimestamp = c.Timestamp - m_NetworkOffsetTimestamp; + } + } } } // namespace TiltBrush diff --git a/Assets/Scripts/Stroke.cs b/Assets/Scripts/Stroke.cs index 209e5c1886..0ced2ffa0e 100644 --- a/Assets/Scripts/Stroke.cs +++ b/Assets/Scripts/Stroke.cs @@ -163,6 +163,7 @@ public Stroke() { m_NodeByTime = new LinkedListNode(this); m_PlaybackNode = new LinkedListNode(this); + m_Guid = Guid.NewGuid(); } /// Clones the passed stroke into a new NotCreated stroke. @@ -185,6 +186,9 @@ public Stroke(Stroke existing) : base(existing) // And we can't use field initializers for the linked list creation. m_NodeByTime = new LinkedListNode(this); m_PlaybackNode = new LinkedListNode(this); + + if (existing.m_Guid != null) + m_Guid = Guid.NewGuid(); } /// Makes a copy of stroke, if one has not already been made. diff --git a/Assets/Scripts/StrokeData.cs b/Assets/Scripts/StrokeData.cs index 26ec4f41a3..896d15fdf0 100644 --- a/Assets/Scripts/StrokeData.cs +++ b/Assets/Scripts/StrokeData.cs @@ -34,6 +34,23 @@ public class StrokeData // Not currently serialized. public int m_Seed; public SketchGroupTag m_Group = SketchGroupTag.None; + public Guid m_Guid; + + // Reference the BrushStrokeCommand that created this stroke with a WeakReference. + // This allows the garbage collector to collect the BrushStrokeCommand if it's no + // longer in use elsewhere. + [NonSerialized] private WeakReference m_Command; + public BrushStrokeCommand Command + { + get + { + if (m_Command != null && m_Command.TryGetTarget(out var command)) + return command; + return null; + } + set { m_Command = new WeakReference(value); } + } + /// This creates a copy of the given stroke. public StrokeData(StrokeData existing = null) diff --git a/Assets/Scripts/UserConfig.cs b/Assets/Scripts/UserConfig.cs index 313c82fdc6..1a811652b8 100644 --- a/Assets/Scripts/UserConfig.cs +++ b/Assets/Scripts/UserConfig.cs @@ -232,14 +232,7 @@ public string[] IncludeTags { if (m_IncludeTags == null) { - if (App.Config.GetIsExperimental()) - { - m_IncludeTags = new[] { "default", "experimental" }; - } - else - { - m_IncludeTags = new[] { "default" }; - } + m_IncludeTags = new[] { "default", "experimental" }; } return m_IncludeTags; } @@ -550,37 +543,34 @@ public Dictionary BrushReplacementMap get { Dictionary results = new Dictionary(); - if (Config.IsExperimental) + if (string.IsNullOrEmpty(BrushReplacements)) { - if (string.IsNullOrEmpty(BrushReplacements)) - { - return results; - } - var replacements = BrushReplacements.Split(','); - foreach (string replacement in replacements) + return results; + } + var replacements = BrushReplacements.Split(','); + foreach (string replacement in replacements) + { + string[] pair = replacement.Split('='); + if (pair.Length == 2) { - string[] pair = replacement.Split('='); - if (pair.Length == 2) + if (pair[0] == "*") { - if (pair[0] == "*") - { - Guid guid = new Guid(pair[1]); - foreach (var brush in App.Instance.m_Manifest.Brushes) - { - results.Add(brush.m_Guid, guid); - } - } - else + Guid guid = new Guid(pair[1]); + foreach (var brush in App.Instance.ManifestFull.Brushes) { - results.Add(new Guid(pair[0]), new Guid(pair[1])); + results.Add(brush.m_Guid, guid); } } else { - OutputWindowScript.Error("BrushReplacement should be of the form:\n" + - "brushguidA=brushguidB,brushguidC=brushguidD"); + results.Add(new Guid(pair[0]), new Guid(pair[1])); } } + else + { + OutputWindowScript.Error("BrushReplacement should be of the form:\n" + + "brushguidA=brushguidB,brushguidC=brushguidD"); + } } return results; } diff --git a/Assets/Settings/Localization/Strings/Strings Shared Data.asset b/Assets/Settings/Localization/Strings/Strings Shared Data.asset index 4aaa38e1db..5bc5787fd3 100644 --- a/Assets/Settings/Localization/Strings/Strings Shared Data.asset +++ b/Assets/Settings/Localization/Strings/Strings Shared Data.asset @@ -52,7 +52,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Key: ADMIN_PANEL_SAVE_SKETCH_BUTTON_DESCRIPTION + m_Key: ADMIN_PANEL_WHAT_S_NEW m_Metadata: m_Items: [] - m_Id: 5065176065482752 @@ -1452,7 +1452,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 76121021711179776 - m_Key: POPUP_GDRIVE_BETATAG + m_Key: LABEL_BETATAG m_Metadata: m_Items: [] - m_Id: 76121263181455360 @@ -3299,6 +3299,18 @@ MonoBehaviour: m_Key: POPUP_UPLOAD_COMPLETE_MOBILE_DESCRIPTION m_Metadata: m_Items: [] + - m_Id: 156198200358006784 + m_Key: MULTIPLAYER_PANEL_ALERT_PASSTHROUGH_ACTIVE + m_Metadata: + m_Items: [] + - m_Id: 157582826200739840 + m_Key: MULTIPLAYER_PANEL_CLOSE_BUTTON_DESCRIPTION + m_Metadata: + m_Items: [] + - m_Id: 176097607781543936 + m_Key: LABEL_ALPHATAG + m_Metadata: + m_Items: [] - m_Id: 217069105871577088 m_Key: VIEW_MODE_TEXT m_Metadata: @@ -3331,6 +3343,102 @@ MonoBehaviour: m_Key: BRUSH_SETTINGS_TRAY_BRUSH_SIZE m_Metadata: m_Items: [] + - m_Id: 294636550056648704 + m_Key: MP_CONNECT + m_Metadata: + m_Items: [] + - m_Id: 294636769901092864 + m_Key: MP_JOIN_ROOM + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Key: MP_LEAVE_ROOM + m_Metadata: + m_Items: [] + - m_Id: 294637000357126144 + m_Key: MP_DISCONNECT + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Key: MP_EDIT_ROOM_NAME + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Key: MP_EDIT_NICK_NAME + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Key: erase text + m_Metadata: + m_Items: [] + - m_Id: 310819533771841536 + m_Key: New Entry + m_Metadata: + m_Items: [] + - m_Id: 312729904472465408 + m_Key: New Entry 1 + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Key: ADMIN_PANEL_SAVE_SKETCH_BUTTON_DESCRIPTION + m_Metadata: + m_Items: [] + - m_Id: 312781662766833664 + m_Key: MULTIPLAYER_STATUS + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Key: MULTIPLAYER__PANEL_STATE + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Key: MULTIPLAYER_PANEL_ROOM_NAME + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Key: MULTIPLAYER_PANEL_NICKNAME + m_Metadata: + m_Items: [] + - m_Id: 312783415369342976 + m_Key: New Entry 2 + m_Metadata: + m_Items: [] + - m_Id: 312962917202468864 + m_Key: MULTIPLAYER_PANEL_ROOM_OWNER + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Key: MULTIPLAYER_PANEL_ROOM_OWNE + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Key: MULTIPLAYER_PANEL_NOT_ROOM_OWNER + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Key: MULTIPLAYER_PANEL_ALERT_BEGINNER_MODE + m_Metadata: + m_Items: [] + - m_Id: 312967595889860608 + m_Key: New Entry 3 + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Key: MULTIPLAYER_PANEL_ALERT_ROOM_EXIST + m_Metadata: + m_Items: [] + - m_Id: 313081115495178240 + m_Key: MULTIPLAYER_PANEL_ALERT_PASSTHROUGH_EXIST + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Key: ADMIN_PANEL_MULTIPLAYER_BUTTON_DESCRIPTION + m_Metadata: + m_Items: [] + - m_Id: 313111642914758656 + m_Key: ADMIN_PANEL_MULTIPLAYER_DESCRIPTION + m_Metadata: + m_Items: [] m_Metadata: m_Items: [] m_KeyGenerator: diff --git a/Assets/Settings/Localization/Strings/Strings_de.asset b/Assets/Settings/Localization/Strings/Strings_de.asset index e0259b2546..acda5ad1d3 100644 --- a/Assets/Settings/Localization/Strings/Strings_de.asset +++ b/Assets/Settings/Localization/Strings/Strings_de.asset @@ -201,7 +201,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: Skizze speichern + m_Localized: Was gibt's Neues m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3576,6 +3576,68 @@ MonoBehaviour: m_Localized: Mehr Informationen zur Verwendung von Open Brush ohne VR m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: Raum beitreten + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: Raum verlassen + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: Raumnamen bearbeiten + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: Spitznamen bearbeiten + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: "Text l\xF6schen" + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: Skizze speichern + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: 'Status: ' + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: 'Raumname: ' + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: 'Spitzname: ' + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: Sie sind der Raumbesitzer + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: Sie sind nicht der Raumbesitzer + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: "Wechseln Sie in den Anf\xE4nger-Modus, um Multiplayer zu verwenden" + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: Der Raum existiert bereits. Sie werden einer bestehenden Sitzung + beitreten. + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: Schalten Sie den Passthrough-Modus aus, um den Mehrspielermodus + zu nutzen. + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: "Mehrspieler-Men\xFC" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_en.asset b/Assets/Settings/Localization/Strings/Strings_en.asset index 0c50b585da..ffe9a7d28e 100644 --- a/Assets/Settings/Localization/Strings/Strings_en.asset +++ b/Assets/Settings/Localization/Strings/Strings_en.asset @@ -201,7 +201,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: Save Sketch + m_Localized: What's New m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3081,7 +3081,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 89093153698373632 - m_Localized: (Restart required) + m_Localized: Less compatibility when exported. See our docs. m_Metadata: m_Items: [] - m_Id: 89093320602312704 @@ -3512,6 +3512,18 @@ MonoBehaviour: m_Localized: Pick a Subfolder m_Metadata: m_Items: [] + - m_Id: 157582826200739840 + m_Localized: Close + m_Metadata: + m_Items: [] + - m_Id: 176097607781543936 + m_Localized: ALPHA + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: Switch off passthrough environment mode to use Multiplayer + m_Metadata: + m_Items: [] - m_Id: 238556149774557184 m_Localized: Image too large to load m_Metadata: @@ -3528,6 +3540,74 @@ MonoBehaviour: m_Localized: Brush Size m_Metadata: m_Items: [] + - m_Id: 294636550056648704 + m_Localized: Connect + m_Metadata: + m_Items: [] + - m_Id: 294636769901092864 + m_Localized: Join Room + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: Leave Room + m_Metadata: + m_Items: [] + - m_Id: 294637000357126144 + m_Localized: Disconnect + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: Edit Room Name + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: Edit Nickname + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: Erase text + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: Save Sketch + m_Metadata: + m_Items: [] + - m_Id: 312781662766833664 + m_Localized: 'Status:' + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: 'Status: ' + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: You are the Room Owner + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: You are not the Room Owner + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: 'RoomName: ' + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: 'Nickname:' + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: Switch to beginner mode use Multiplayer + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: Room already exists. You will be joining an existing session. + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: 'Multiplayer Menu ' + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_es.asset b/Assets/Settings/Localization/Strings/Strings_es.asset index 0aa94db064..6af4360f3d 100644 --- a/Assets/Settings/Localization/Strings/Strings_es.asset +++ b/Assets/Settings/Localization/Strings/Strings_es.asset @@ -201,7 +201,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: Guardar dibujo + m_Localized: "Qu\xE9 hay de nuevo" m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3548,6 +3548,66 @@ MonoBehaviour: m_Localized: "M\xE1s informaci\xF3n sobre c\xF3mo usar Open Brush sin VR" m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: Unirse a la Sala + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: Salir de la Sala + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: Editar Nombre de la Sala + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: Editar Apodo + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: Borrar texto + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: Qu\xE9 hay de nuevo + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: 'Estado: ' + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: 'Nombre de la sala: ' + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: 'Apodo: ' + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: Eres el propietario de la sala + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: No eres el propietario de la sala + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: Cambia al modo principiante para usar el multijugador + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: "La sala ya existe. Te unir\xE1s a una sesi\xF3n existente." + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: Desactiva el modo de entorno de passthrough para usar el multijugador. + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: "Men\xFA Multijugador" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_fr.asset b/Assets/Settings/Localization/Strings/Strings_fr.asset index c0c7d234f0..528dd733e2 100644 --- a/Assets/Settings/Localization/Strings/Strings_fr.asset +++ b/Assets/Settings/Localization/Strings/Strings_fr.asset @@ -199,7 +199,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: Enregistrer le croquis + m_Localized: Quoi de neuf m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3517,6 +3517,67 @@ MonoBehaviour: m_Localized: Plus d'informations sur l'utilisation d'Open Brush sans VR m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: Rejoindre la Salle + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: Quitter la Salle + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: Modifier le Nom de la Salle + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: Modifier le Pseudo + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: Effacer le texte + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: Quoi de neuf + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: 'Statut: ' + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: "Nom de la salle\_: " + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: "Surnom\_: " + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: "Vous \xEAtes le propri\xE9taire de la salle" + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: "Vous n'\xEAtes pas le propri\xE9taire de la salle" + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: "Passez en mode d\xE9butant pour utiliser le multijoueur" + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: "La salle existe d\xE9j\xE0. Vous allez rejoindre une session existante." + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: "D\xE9sactivez le mode environnement de transparence pour utiliser + le multijoueur." + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: Menu Multijoueur + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_ja.asset b/Assets/Settings/Localization/Strings/Strings_ja.asset index 4175e9eeb7..4379c4df58 100644 --- a/Assets/Settings/Localization/Strings/Strings_ja.asset +++ b/Assets/Settings/Localization/Strings/Strings_ja.asset @@ -200,7 +200,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: "\u30B9\u30B1\u30C3\u30C1\u3092\u4FDD\u5B58" + m_Localized: "\u65B0\u7740\u60C5\u5831" m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3470,6 +3470,66 @@ MonoBehaviour: m_Localized: "VR\u306A\u3057\u3067Open Brush\u3092\u4F7F\u7528\u3059\u308B\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306E\u8A73\u7D30" m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: "\u90E8\u5C4B\u306B\u53C2\u52A0" + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: "\u90E8\u5C4B\u3092\u9000\u51FA" + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: "\u90E8\u5C4B\u306E\u540D\u524D\u3092\u7DE8\u96C6" + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: "\u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\u3092\u7DE8\u96C6" + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: "\u30C6\u30AD\u30B9\u30C8\u3092\u6D88\u53BB" + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: "\u65B0\u7740\u60C5\u5831" + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: "\u30B9\u30C6\u30FC\u30BF\u30B9\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: "\u30EB\u30FC\u30E0\u540D\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: " \u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: "\u3042\u306A\u305F\u306F\u30EB\u30FC\u30E0\u306E\u6240\u6709\u8005\u3067\u3059" + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: "\u3042\u306A\u305F\u306F\u30EB\u30FC\u30E0\u306E\u6240\u6709\u8005\u3067\u306F\u3042\u308A\u307E\u305B\u3093" + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: "\u30DE\u30EB\u30C1\u30D7\u30EC\u30A4\u30E4\u30FC\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001\u30D3\u30AE\u30CA\u30FC\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044" + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: "\u30EB\u30FC\u30E0\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u65E2\u5B58\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306B\u53C2\u52A0\u3057\u307E\u3059\u3002" + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: "\u30DE\u30EB\u30C1\u30D7\u30EC\u30A4\u30E4\u30FC\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001\u900F\u904E\u74B0\u5883\u30E2\u30FC\u30C9\u3092\u30AA\u30D5\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002" + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: "\u30DE\u30EB\u30C1\u30D7\u30EC\u30A4\u30E4\u30FC\u30E1\u30CB\u30E5\u30FC" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_ko.asset b/Assets/Settings/Localization/Strings/Strings_ko.asset index 1fdf5c1bfe..47251b9d18 100644 --- a/Assets/Settings/Localization/Strings/Strings_ko.asset +++ b/Assets/Settings/Localization/Strings/Strings_ko.asset @@ -197,7 +197,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: "\uC2A4\uCF00\uCE58 \uC800\uC7A5" + m_Localized: "\uC0C8\uB85C\uC6B4 \uC18C\uC2DD" m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3536,6 +3536,69 @@ MonoBehaviour: \uC815\uBCF4" m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: "\uBC29 \uCC38\uC5EC" + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: "\uBC29 \uB098\uAC00\uAE30" + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: "\uBC29 \uC774\uB984 \uD3B8\uC9D1" + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: "\uB2C9\uB124\uC784 \uD3B8\uC9D1" + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: "\uD14D\uC2A4\uD2B8 \uC9C0\uC6B0\uAE30" + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: "\uC0C8\uB85C\uC6B4 \uC18C\uC2DD" + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: "\uC0C1\uD0DC: " + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: "\uBC29 \uC774\uB984: " + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: "\uB2C9\uB124\uC784: " + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: "\uB2F9\uC2E0\uC740 \uBC29\uC758 \uC18C\uC720\uC790\uC785\uB2C8\uB2E4" + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: "\uB2F9\uC2E0\uC740 \uBC29\uC758 \uC18C\uC720\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4" + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: "\uBA40\uD2F0\uD50C\uB808\uC774\uC5B4\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 + \uCD08\uBCF4\uC790 \uBAA8\uB4DC\uB85C \uC804\uD658\uD558\uC138\uC694" + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: "\uBC29\uC774 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uAE30\uC874 + \uC138\uC158\uC5D0 \uCC38\uC5EC\uD569\uB2C8\uB2E4." + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: "\uBA40\uD2F0\uD50C\uB808\uC774\uC5B4\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 + \uD328\uC2A4\uC2A4\uB8E8 \uD658\uACBD \uBAA8\uB4DC\uB97C \uB044\uC138\uC694." + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: "\uBA40\uD2F0\uD50C\uB808\uC774 \uBA54\uB274" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Settings/Localization/Strings/Strings_zh.asset b/Assets/Settings/Localization/Strings/Strings_zh.asset index 801374490a..578696a8c6 100644 --- a/Assets/Settings/Localization/Strings/Strings_zh.asset +++ b/Assets/Settings/Localization/Strings/Strings_zh.asset @@ -195,7 +195,7 @@ MonoBehaviour: m_Metadata: m_Items: [] - m_Id: 5064506084139008 - m_Localized: "\u4FDD\u5B58\u8349\u56FE" + m_Localized: "\u6709\u4EC0\u4E48\u65B0\u5185\u5BB9" m_Metadata: m_Items: [] - m_Id: 5065040224559104 @@ -3466,6 +3466,66 @@ MonoBehaviour: m_Localized: "\u5173\u4E8E\u4E0D\u4F7F\u7528 VR \u4F7F\u7528 Open Brush \u7684\u66F4\u591A\u4FE1\u606F" m_Metadata: m_Items: [] + - m_Id: 294636769901092864 + m_Localized: "\u52A0\u5165\u623F\u95F4" + m_Metadata: + m_Items: [] + - m_Id: 294636908816441344 + m_Localized: "\u79BB\u5F00\u623F\u95F4" + m_Metadata: + m_Items: [] + - m_Id: 294637073212186624 + m_Localized: "\u7F16\u8F91\u623F\u95F4\u540D\u79F0" + m_Metadata: + m_Items: [] + - m_Id: 294637384320491520 + m_Localized: "\u7F16\u8F91\u6635\u79F0" + m_Metadata: + m_Items: [] + - m_Id: 307216698459103232 + m_Localized: "\u6E05\u9664\u6587\u672C" + m_Metadata: + m_Items: [] + - m_Id: 312730512516521984 + m_Localized: "\u6709\u4EC0\u4E48\u65B0\u5185\u5BB9" + m_Metadata: + m_Items: [] + - m_Id: 312783011751469056 + m_Localized: " \u72B6\u6001\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312783116814589952 + m_Localized: "\u623F\u95F4\u540D\u79F0\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312783250461892608 + m_Localized: "\u6635\u79F0\uFF1A" + m_Metadata: + m_Items: [] + - m_Id: 312963339069759488 + m_Localized: "\u60A8\u662F\u623F\u95F4\u6240\u6709\u8005" + m_Metadata: + m_Items: [] + - m_Id: 312963447907753984 + m_Localized: "\u60A8\u4E0D\u662F\u623F\u95F4\u6240\u6709\u8005" + m_Metadata: + m_Items: [] + - m_Id: 312967307862810624 + m_Localized: "\u5207\u6362\u5230\u521D\u5B66\u8005\u6A21\u5F0F\u4EE5\u4F7F\u7528\u591A\u4EBA\u6E38\u620F" + m_Metadata: + m_Items: [] + - m_Id: 312967604588847104 + m_Localized: "\u623F\u95F4\u5DF2\u5B58\u5728\u3002\u60A8\u5C06\u52A0\u5165\u4E00\u4E2A\u73B0\u6709\u7684\u4F1A\u8BDD\u3002" + m_Metadata: + m_Items: [] + - m_Id: 156198200358006784 + m_Localized: "\u5173\u95ED\u900F\u89C6\u73AF\u5883\u6A21\u5F0F\u4EE5\u4F7F\u7528\u591A\u4EBA\u6E38\u620F\u3002" + m_Metadata: + m_Items: [] + - m_Id: 313111533204348928 + m_Localized: "\u591A\u4EBA\u83DC\u5355" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/README.md b/README.md index 2979a01eab..cfabe33896 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,18 @@ Follow these steps to build your app for Oculus Quest: `../Builds/OculusMobile_Release_OpenBrush/`. 1. Run `adb install com.Icosa.OpenBrush.apk`. +### Enabling Multiplayer Photon Fusion and Photon Voice + +1. Download and install both [Photon Fusion 2.0.3 SDK](https://doc.photonengine.com/fusion/current/getting-started/sdk-download) and [Photon Voice 2](https://assetstore.unity.com/packages/tools/audio/photon-voice-2-130518?srsltid=AfmBOoqJifR_h-nIp73IL5F83GSvOmk3WqKytS1YsxrEUuZqVfAv5kQ9) +1. Alternatively Download [Photon Fusion 2.0.3 SDK + Photon Voice 2] (https://github.com/icosa-mirror/photon-fusion/releases/tag/Fusion_v2_Voice_2) copy it's content to the Assets Folder. +1. Restart Unity to trigger the creation of the Photon Fusion and Photon Voice specific defines. +1. In the **Standalone** and **Android** tabs of the Player settings, go to **Other Settings** > **Scripting Define Symbols**. +1. Click the + button to create a new entry. +1. Add `MP_PHOTON` and press **Apply**. +1. Follow the steps to [create your secrets file](#-Generating-Secrets-file). + Add 2 new items to the **Secrets** field. Both `Photon Fusion` and `Photon Voice` should have their own entries. +1. Put the app IDs in the `Client ID` field for each. + ### Publishing to Oculus stores Note: _Tilt Brush_ is a Google trademark. If you intend to publish a cloned From cbb54d6ac9270d1dbd1092a1fc754c5c40c3bbd3 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Sat, 21 Dec 2024 14:30:44 +0000 Subject: [PATCH 17/17] Runtime switching of experimental mode (#802) * Runtime switching for experimental brushes * Icon experimental badges need to update all the time